Python基础之文件处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础之文件处理相关的知识,希望对你有一定的参考价值。
一、常用操作
1.打开文件 open()
f=open(‘a.txt‘)
print(f) #----------------------> <_io.TextIOWrapper name=‘a.txt‘ mode=‘r‘ encoding=‘cp936‘>
其中a.txt 是相对路径,如果想用绝对路径打开文件,要在文件名前加一个‘r’,否则就要把‘\\’改成‘\\\\’
打开文件时有个问题,就是字符编码的问题。如果不指定打开编码,默认使用操作系统的编码,Windows是GBK
可以在这里查看文件编码方式,使用什么编码保存的文件,就要用什么编码打开文件,可以在open()文件时指定打开的编码方式
写成这样:f=open(‘a.txt‘,encoding=‘utf-8‘)
还有一个问题就是,这种打开文件的方式会把整个文件读到内存中,如果文件很大的话,内存可能就会被占满了,可以用for line in f的方式
打开文件后,就可以操作文件了,如读文件f.read(),注意最后一定要关闭文件f.close()
2.文件的打开模式
f=open(文件路径,模式)
打开文件的模式有:
- r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
- w,只写模式【不可读;不存在则创建;存在则清空内容】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【可读; 不存在则创建;存在则只追加内容】
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b #以字节的方式操作不会有乱码,也不用转码
3.print(f.readline()) 打印文件第一行
4.print(f.readlines()) 将文件以列表的形式打印
5.按读的方式打开文件并不能操作文件,只有以写的方式打开文件才能进行写操作
f.open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
如果文件存在,先把原文件内容删除,再写
如果文件不存在,则新建一个文件,在写
在进行写操作是注意,文件中都是字符串类型,要带着引号,也可以以列表的形式写,当然列表的每个元素也必须是字符串
f=open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
f.write(‘123413\\n‘) #\\n代表换行
f.write([‘123\\n‘,‘hello\\n‘])
f.close() #注意最后一定要关闭文件
二、其他方法
f=open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
f.flush() #写完后立即刷到硬盘上
print(f.close()) #查看文件是否为关闭状态
print(f.encoding) #查看编码方式
print(f.name) #查看文件名
print(f.readable()) #查看是否可读
print(f.wirteable()) #查看是否可写
print(f.read()) #括号里可以指定数字,只有read()里的数字是以字符为单位,
# 其余的文件内光标移动如seek,tell,truncate都是以字节为单位
print(f.seek(2)) #seek是以字节为移动单位,但是汉字在utf-8中是以三个字节为单位的,所以如果是seek(2) 就会报错
print(f.tell()) #告诉当前光标位置
f.truncate(3) #截断,从0到3后面的删除,注意一定要是写操作才行
三、二进制的方式复制文件
以一张图片a.jpg为例,复制一份
read_file=open(‘a.jpg‘,‘rb‘)
write_file=open(‘a.copy.jpg‘,‘wb‘)
write_file.write(read_file.read())
四、文件修改
#修改文件a.txt中‘hello‘为‘hi‘
import os #导入os模块
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,\\ #用with语句可以很方便的进行上下文处理,可以自动关闭操作的文件
open(‘.a.txt.swp‘,‘w‘,encoding=‘utf-8‘) as write_f: #新建一个临时文件
for line in read_f:
if ‘hello‘ in line:
line=line.replace(‘hello‘,‘hi‘)
write_f.write(line)
os.remove(‘a.txt‘)
os.rename(‘.a.txt.swp‘,‘a.txt‘)
以上是关于Python基础之文件处理的主要内容,如果未能解决你的问题,请参考以下文章