能力有限,仅供参考
本篇博文是上一篇博文( Python的文件读取,写入)的后续,也是python文件管理的一部分,废话不多说,现在就开始。
1. 编码
在实际工作学习中,你可以遇到乱码的问题,其原理就是:编码与解码的编码方式不同。在Python中,读取文件时出现问题,可以指定的编码获取字符串(encoding
参数)
语法:
open('文件位置','读取方式', 编码获取方式)
如:
open('E:/test/test.txt,'r', encoding='utf-8')
2. 复制
shutil 模块提供的copyfile()函数可用于复制文件
(不在os模块中哦!)
典型的用法如下:
shutil.copyfile(txt1, txt2)
# 把文件txt1的内容复制到文件txt2中
shutil.move(txt1, txt2)
# 把文件txt1移动到txt2下
shutil.copy(txt1, txt2)
# 把文件txt1复制到txt2下
shutil.copytree(test1, test2)
# 把test1目录整个复制到test2下
shutil.rmtree(test)
# 递归删除test目录以及目录内的所有内容
3. 缓冲
缓冲的目的是减少写入磁盘的次数,以提高程序整体的运行效率。常见有 3 种文件缓冲,即全缓冲,行缓冲,无缓冲
。
3.1 全缓冲
open 函数的 buffering 设置为大于 1 的整数 n,表示缓冲区大小,Linux 默认为内存页面的大小,即 4096B。在全缓冲方式下,调用文件对象的写操作(如 write()方法)写满了 n 字节才会真正写入磁盘。
open('demo1.txt', 'w', buffering=4096)
3.2 行缓冲
open 函数的 buffering 设置为 1,碰到换行就会将缓冲区的内容写入磁盘。当然,也可通过换行符来进行控制行缓冲。
open('demo2.txt', 'w', buffering=1)
3.3 无缓冲
open 函数的 buffering 设置为 0,有输入(内容)就有写入(磁盘)。
open('demo3.txt', 'w', buffering=0)
3.4 缓冲刷新
缓冲刷新-----**flush()**方法
将缓冲区中的数据写入文件,同时清空缓冲区,不需要被动地等待输出缓冲区写入。此方法无参数,无返回值。
f.flush()
由于有缓冲的存在,字符串可能会没有出现在目标文件中,直到调用 **flush()**或 **close()**方法时,才会被写入目标文件中。一般的文件流操作包含缓冲机制,
4. 删除
文件删除
os.remove(文件名)
import os
filename='E:/test/test1/1.txt'
os.remove(filename)
目录删除
os.rmdir(目录名)
**os.rmdir()**方法用于删除单级空目录,若目录不为空则无法删除,则会报错。**os.removedirs()**方法用于删除多级目录。
如:
import os
path1 = "E:/test/test1"
path2 = "E:/test"
os.rmdir(path1)
os.removedirs(path2)
感谢大家的支持,关注,评论,点赞!