文件操作
文件操作的顺序:
1.先设置文件路径: d:老师.txt #设置一个文件保存到D盘里。
2.编码方式: utf-8 gbk……
3.操作方式:只读r,只写w,追加a,读写r+,写读w+,追加读a+……文件操作最好只用r,w,a因为如果用读写之类的会造成光标错乱,形成乱码。
f = open('d:老师.txt',mode='r',encoding='utf-8') content = f.read() print(content) f.close()
以什么方式编码方式储存的文件,就以什么编码方式打开进行操作。
如果在pycharm中写,可以去掉文件位置和文件后缀名。
3.1只读 r (非文字文件,还有上传和下载。)
r #只读 #用pycharm来编写,设置一个log文件,文件为只读文件,用utf-8来编写的 f = open('log',mode='r',encoding='utf-8') content = f.read() print(content) f.close()
rb #为只读(rb是bytes类型) f = open('log',mode='rb') content = f.read() print(content) f.close()
3.2只写 w (先将源文件的内容全部删除,然后在写。)
w #只写文件 f = open('log',mode='r',encoding='utf-8') f.write('sole') f.close()
wb #只写的bytes类型, str转换bytes类型需要用encode,而不用encoding。 f = open('log',mode='r') f.write('sole'.encode('utf-8')) f.close()
3.3追加 a (在文件内容的后面,追加字符。)
a #追加文件 f = open('log',mode='a',encoding='utf-8') f.write('memory') f.close()
ab #追加的bytes类型 f = open('log',mode='ab') f.write('memory'.encode('utf-8')) f.close()
3.4 读写(可以先读后写)r+
r+ f = open('log',mode='r+',encoding='utf-8') print(f.read()) f.write('熊猫,猫熊') #写多少占多少位,如果文件内容读取的内容剩下就继续读出。 f.close()
r+b f = open('log',mode='r+b' print(f.read()) f.write('熊猫,猫熊'.encode('utf-8')) f.close()
3.5写读 w+ (先写后读)
w+ f = open('log',mode='w+',encoding='utf-8') f.write('aaaa') f.seek(0) print(f.read()) f.close()
w+b f = open('log',mode='w+b') f.write('aaaa'.encoude('utf-8')) f.seek(0) print(f.read()) f.close()
3.6追加a+
a+ f = open('log',mode='a+',encoding='utf-8') f.write('aaaa') print(f.read(2)) f.close()
3.7其他操作
f = open('log',mode='r+',encoding='utf-8') #content = f.read(3)(读出来的都是 字符) f.tell() # 断点续传告诉你光标的位置 f.seek(3) #(seek用字节定光标的位置)光标---文件指针 content = f.read() print(content) f.close() f.readable()#是否可读 f.readline()#一行一行的读 f.readlines()#每一行当成列表中的一个元素,添加到列表中 f.truncate(5) #源文件截取 for line in f: #for循环,查找文件内容里面所有,最好用for循环 print(line)
with open('log',mode='r+',encoding='utf-8') as obj : print(obj.rand()) #上述必须加close比较麻烦,所以用with open as obj
3.8删除和修改文件
with open('log',encoding='utf-8') as f,open('log.bak','w',encoding='utf-8') as f2: for line in f: if 'sole' in line: line = line.replace('sole','panda') f2.write(line) #写文件 import os os.remove('log') #删除文件 os.rename('log.bak','log') #重命名文件
4.什么是绝对路径和相对路径
绝对路径是文件直接存储在计算机的硬盘里,比如直接存储在C盘里、D盘里或是E盘里;
相对路径是文件没有直接存储在计算机的硬盘里,比如存储在C盘里的一个文件夹中等。