Python 中的文件操作
(1)文件路径
- 绝对路径,从磁盘的根目录寻找,或者从互联网上找一个路径如:
f=open('C:/Users/Administrator/Desktop/My Projects/demo1/haha.txt',mode='r',encoding='gbk')
str1=f.read()
print(str1)
f.close()
- 相对路径,相对于当前程序所在的文件夹,其中’…/'是返回上一层文件夹(常用)
(2)常用文件操作模式
- r,rb(只读bytes) ##只读
- w,wb(只写bytes) ##只写,会把原来文件清空
- a,ab(追加写bytes) ##追加写,不会清空原文件
- r+ ##读写
- w+ ##写读
- a+ ##追加写读
(3)常用操作
- f.seek(偏移量,位置) #seek(0)移动到首位置,seek(0,2)移动到结尾,还有seek(0,1),1是当前位置,2是末尾
2)f.tell() 获取光标位置
3)f.truncate() 截断文件,默认删除光标后所有,且必须在写文件的模式下,如果给参数,则截取从开始到参数位置
(4)常用操作函数
读文件
1)用open打开一个文件,open(‘文件名(路径)’,mode=‘模式(2中的)’,encoding=‘字符集(编码)’)
f=open('haha.txt',mode='r',encoding='gbk')#Windows的默认
str1=f.read()
print(str1)
f.close()
''''
输出结果:
床前明月光
疑是地上霜
举头望明月
低头思故乡
''''
- read() ##读取文件,返回字符串
3)close() ##关闭文件
4)readline() ##一次读一行,可以用循环进行按行打印
f=open('haha.txt',mode='r',encoding='gbk')
str1=f.readline().strip()
print(str1)
str1=f.readline().strip()
print(str1)
f.close()
'''
#输出结果:
床前明月光
疑是地上霜
'''
- for line in f: ##文件是一个可迭代对象,按行迭代
f=open('haha.txt',mode='r',encoding='gbk')
for line in f:
print(line).strip()#一行一行处理数据
f.close()
写文件(换行需要手动控制,输入’\n’)
- ‘w’,‘wb’,##只要是带w的,操作了就会清空文件,而如果文件不存在,则会自动创建文件
f=open('a.txt',mode='w',encoding='utf-8')
f.write('感时花溅泪\n恨别鸟惊心')
f.flush()#刷新缓冲区
f.close()
- a模式
f=open('a.txt',mode='a',encoding='utf-8')
f.write('感时花溅泪\n恨别鸟惊心')
f.flush()
f.close()
b模式(bytes,01格式)
- 用来处理非文本文件
- 复制图片
f1=open('1.png',mode='rb')#mode带b,不能写encoding
f2=open('2.png',mode='wb')
for line in f1:
f2.write(line)#读一行写一行
f1.flush()
f2.flush()
f1.close()
f2.close()
带’+'模式
- r+,先读再写,无论光标在哪,写入时都是在结尾写入,除非先进行写入操作,这时候会从开始写入,且覆盖源文件(最好用的模式)
f=open('a.txt',mode='r+',encoding='utf-8')
s=f.read()
f.write('一花一世界')
print(s)
f.close()
'''
如果先写再读会出问题,这时候会从头开始写,并且覆盖原文件内容
f=open('a.txt',mode='r+',encoding='utf-8')
f.write('一花一世界')
s=f.read()
print(s)
f.close()
'''
- w+,先写再读,会先清空内容,然后再写,写完之后光标在最后,需要先移动光标,再读
f=open('a.txt',mode='w+',encoding='utf-8')
f.write('一花一世界')#
f.seek(0)
s=f.read()
print(s)
f.close()
3)a+ ,先在末尾追加内容,再读,不会清空原来内容,写完之后光标在最后,需要先移动光标,再读
f=open('a.txt',mode='a+',encoding='utf-8')
f.write('一叶一菩提')
f.seek(0)
s=f.read()
print(s)
f.close()
(5)文件的另一种打开方式
- with open() as f: 此种打开方式会自动关闭刷新
2)修改文件操作,如下
import os#导入os库
#打开目标文件,with open as f自动关闭刷新
with open('a.txt',mode='r',encoding='gbk') as f1,\#打开要操作的文件
open('a_副本.txt',mode='w',encoding='gbk') as f2:#再创建一个副本
for line in f1:
line=line.replace('二','一')#把文件中的二都换成一
f2.write(line)#写入到副本中
os.remove('a.txt')#删除原文件
os.rename('a_副本.txt','a.txt')#重命名副本文件
来源:CSDN
作者:Vagrant-z
链接:https://blog.csdn.net/qq_45894553/article/details/104534419