Cat-God-007

导航

Python的文件编码,复制,缓冲,删除

能力有限,仅供参考

本篇博文是上一篇博文( 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)

在这里插入图片描述
感谢大家的支持,关注,评论,点赞!

posted on 2023-02-10 15:46  成果和地方  阅读(21)  评论(0编辑  收藏  举报  来源