内容大纲
一:文件的基本操作,
>常见问题
>encoding
>绝对路径和相对路径的
二:文件的读写追加相关操作
>读(r, r+ ,rb,r+b)
>写(w,w+,wb,w+b)
>追加(a,a+,ab,a+b)
三:文件相关的操作方法
四:文件的常规修改方式
一:文件的基本操作,
>常见问题
>>1 文件路径错误,比如 \把需要的内容转意了 比如\a \n'
解决方法,在字符串前面增加r
# with open('f:\a.txt','r',encoding='utf-8') as f: # f.read() # OSError: [Errno 22] Invalid argument: 'f:\x07.txt' # with open(r'f:\a.txt','r',encoding='utf-8') as f: # f.read()
>encoding
encoding的作用只是强调,
>绝对路径和相对路径的
>>1 绝对路径:指的是具体到哪个文件夹的文件
>>2 相对路径:指的是当前操作的文件夹的目录地址
二:文件的读写追加相关操作
>读(r, r+ ,rb,r+b)
>r 读, read() 返回str # read( 字符) 1 代表一个字符.2 带表两个字符
readline() 返回str
readlines() 返回list
for 变量 i 句柄 : 返回str 如果文件很大需要使用for 循环,这样不会造成内容消耗
1 # 4 读 (r ,rb ,r+ r+b) 2 # with open('1.txt','r',encoding='utf-8') as f: 3 # contect =f.read() 4 # print(contect) 5 # with open('1.txt','r',encoding='utf-8') as f: 6 # contect =f.read() 7 # print(contect) 8 # with open('f:/msg.jpg','rb') as f: 9 # contect =f.read() 10 # print(contect) 11 #读写, 需要先读在写,如果先写在读的情况下需要,调整光标的位置 12 # 利用seek() 调整光标位置. (0)代表开头 (0,2)代表结尾 13 # with open('1.txt','r+',encoding='utf-8') as f : 14 # f.write('汉子') 15 # 16 # l =f.read() 17 # print(l)
>写(w,w+,wb,w+b)
write()
>追加(a,a+,ab,a+b)
如果有源文件,那么就在文件后面追加内容, 如果没有内容那么就新创建文件
#5 追加模式 a # 本身的内容不删除,只是在最后增加 #如果没有这个文件夹,那么则创建文件,有的话则追加内容 # with open('1.txt','a',encoding='utf-8') as f: # f.write('这是追加的内容')
三:文件相关的操作方法
# readable 判断这个文件是否可以读
# writable 判断这个文件是不是可写
# flush 强制保存, 相当于Ctrl+s
# tell 返回光标位置
# seek 调整光标位置 有两个参数 ,第一参数是光标位置,第二个1 中间 (0,2)是末尾
# truncate 截断内容. 打印截断之前的内容, 按照字节截断 只能在写的模式下进行 进行,'w' 下没有意义
四:文件的常规修改方式
# 5把新文件名字修改成旧文件 import os with open('1.txt','r',encoding='utf-8') as f1 ,open('1bak.txt','a',encoding='utf-8') as f2: old_contect =f1.read() new_contect =old_contect.replace('a','好吃') f2.write(new_contect) os.remove('1.txt') os.rename('1bak.txt','1.txt')
用for 循环可以 可降低内存消耗.
with open('1.txt','r',encoding='utf-8') as f1 ,open('1bak.txt','a',encoding='utf-8') as f2: # old_contect =f1.read() # new_contect =old_contect.replace('a','好吃') # f2.write(new_contect) # for line in f1: # new_line = line.replace('好吃','呵呵') # f2.write(new_line) # os.remove('1.txt') # os.rename('1bak.txt','1.txt')
年与时驰,意与日去,遂成枯落,
多不接世,悲守穷庐,将复何及。