0

python文件处理 - 王献运

 1 year ago
source link: https://www.cnblogs.com/wangxianyun/p/17157478.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

python文件处理

1.文件介绍
python操作文件

1.python文件的基本操作打开文件关键字open语法格式:open('文件路径','读写模式','字符编码')f = open('a.txt','r',encoding='utf-8')#打开文件print(f.read())#操作文件f.close()#关闭文件2.with上下文管理器(with打开文件之后会自动关闭)语法格式:with open(r'a.txt','r',encoding='utf-8') as f:as f:就相当于你写了一个f = open,只不过这个as替换了等于号,这个f(句柄)就相当于一个变量名可以随意更改r 的作用:有时有你在填写路径的时候遇到反斜杠可能会发生转义,这个时候字符串最前面加上 r 来解决转义的问题,

2.文件的读写模式

1. r == read: 只读,不能写with open(r'a.txt','r',encoding='utf-8') as f:f.read()#read()是有缺陷的,如果打开文件特别大的时候就会打不开,会很慢。会导致内存溢出,因为他打开不会存在磁盘中,会先存在内存中 2. w ==write:只能写,不能读with open(r'a.txt','w',encoding='utf-8') as f:f.write('内容')#如果路径不存在,会新建一个文件#如果文件存在,会先清空文件中的内容,在进行写内容,就算不写东西用pass,也会清空,w模式就会直接清空# w 模式只能写string类型 3. a == apppen : 追加with open(r'a.txt','a',encoding='utf-8') as f:f.write('内容\n')#如果路径不存在,会新建一个文件#不会清空文件内容,但是不会换行,需要自己在内容后面加\n多行数据:括号里不可能写多行数据,需要多个write如下:f.write('内容\n')f.write('内容\n')f.write('内容\n')f.write('内容\n')########r,w, a:只能读写文档,不能读写视频音频

3.文件的操作方法

读模式with open(r'a.txt','a',encoding='utf-8') as f:print(f.readline())#一次读取一行,会自动换行print(f.readlines())#把文件内的数据按照每一行组装成列表的模式print(f.readable())#判断是否可具备读的条件,就是看这个文件是否可读,返回bool值 写模式with open(r'a.txt','a',encoding='utf-8') as f:print (f.write())#直接清空数据,然后根据口号中的内容写数据print(f.writeable())#判断是否具备写的条件,返回bool值print(f.writelines(['献运好帅\n','献运好帅\n','献运好帅\n',]))#就是吧数据一行一行的给你去写 文件的操作优化print(f.flush())#把内存中的数据立刻刷到硬盘中,因为你一开始写的数据会存储在内存中如果发生断电数据会消失"""文件句柄 f 支持for循环"""with open(r'a.txt','a',encoding='utf-8') as f: for line in f :print(line)#把文件里面的数据一行一行打印,以后读取文件的时候都要用for循环一行一行的去读取

4.文件的操作模式

r. w. a. 模式1. 只能操作文本2. 都是以字符串为单位3. r,w,a,原先的写法是rt,wt,at,如果是只操作文本这个t可以省略 b模式:二进制1.能操作任何的数据类型,eg:文本,音频,视屏2.写法:rb ab wb :此时的b不能省略3.b模式的情况下encoding参数不能写,因为他都是字符编码的模式了encoding就没用了 rb:with open(r'a.jpeg','rb') as f:#b模式的话字符编码就不要了print(f.read())#打印出一推二进制数wb:with open(r'a.jpeg','rb',encoding='utf-8') as f:f.write(b'你好')#你好前面必须加上b才可以打印出,不然出来的是乱码注释第一种编码方式s.'你好'f.write(s.encode(utf8))#这是第二种编码方式"""wb写进去了也必须rb来读,然后后面还需要跟上decode去解码print(f.read().decode('utf8'))"""按照字符或字节读取:要注意他读取的数据大小with open(r'a.txt','a',encoding='utf-8') as f:print(f.read(1))#当 r 模式下,read括号里面的数字代表的是字符,但是在 b 模式下read后面括号里面的代表的是字节

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK