标签:写法 escape 补充 ror 培训 pos lin mode odi
文件操作初识
在d盘创建”护士空姐学生少妇联系方式”的txt 文件
path 文件路径:d:\护士空姐学生少妇联系方式.txt
encoding编码方式:utf-8,gbk....
mode 操作方式: 只读,只写,追加,读写,写读.....
# f2 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # print(f2.read()) # f1.close()
路径:绝对路径:从根目录开始一直找到文件。
相对路径:从当前目录开始找到的文件。
错误原因分析:
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbf in position 0: invalid start byte
编码错误:文件存储时编码方式与文件打开时的编码方式不一致。
SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \uXXXX escape
两种:
第一种:加r
f1 = open(r‘d:\u护士空姐学生少妇联系方式.txt‘, encoding=‘GB2312‘, mode=‘r‘)
print(f1.read())
f1.close()
第一种:加\
f1 = open(‘d:\\护士空姐学生少妇联系方式.txt‘, encoding=‘GB2312‘, mode=‘r‘)
print(f1.read())
f1.close()
#凡是带b不用encoding
#只有是r模式 mode=‘r‘可以省略不写
常用操作方法
r,w,a
读模式:
*r
read
# 1,f.read() 全部读出来。 # f2 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # print(f2.read()) # f2.close()
read(n)
# f1 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # print(f1.read(3)) # f1.close() # r模式:read(n) n 是按照字符读取。 # rb模式:read(n) n 是按照字节读取。
readline()
# f1 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # # print(f1.readline()) # # print(f1.readline()) # # print(f1.readline()) # # print(f1.readline()) # f1.close()
readlines()
# f1 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # print(f1.readlines()) # for line in f1.readlines(): # print(line) # f1.close()
for循环 最好的
# f1 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘) # for line in f1: # print(line) # f1.close()
rb
# f1 = open(‘护士学生空姐班主任.txt‘,mode=‘rb‘) # print(f1.read(1)) # f1.close()
*r+
# f1 = open(‘护士学生空姐班主任.txt‘, encoding=‘utf-8‘, mode=‘r+‘) # print(f1.read()) # f1.write(‘666‘) # f1.close()
r+b
# f1 = open(‘护士学生空姐班主任.txt‘, mode=‘r+b‘) # print(f1.read()) # f1.write(‘666‘.encode(‘utf-8‘)) # f1.close()
写模式:
*w
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w‘) # f1.write(‘老男孩是最好的培训学校...‘) # f1.close() # f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w‘) # f1.write(‘法国进口分类结果‘) # f1.close()
w:没有文件,创建文件写内容。
w:如果有文件,清空原文件,写入新内容。
wb
# f1 = open(‘log2‘, mode=‘wb‘) # f1.write(‘法国进口分类结果‘.encode(‘utf-8‘)) # f1.close()
w+
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w+‘) # f1.write(‘老老男孩.....‘) # f1.seek(0) # 调整光标 # print(f1.read()) # f1.close()
w+b
追加模式
*a
a:没有文件,创建文件写内容。
a:如果有文件,最后面追加新内容。
# f1 = open(‘log3‘, encoding=‘utf-8‘, mode=‘a‘) # f1.write(‘barry‘) # f1.close()
ab
# f1 = open(‘log3‘, mode=‘ab‘) # f1.write(‘中国‘.encode(‘gbk‘)) # f1.close()
a+
# f1 = open(‘log3‘, encoding=‘utf-8‘, mode=‘a+‘) # f1.write(‘范德萨急功近利开发工具‘) # f1.seek(0) # print(f1.read()) # f1.close()
a+b
补充:
#ps 非文字的文件的读取写入
# f1 = open(‘11.jpg‘, mode=‘rb‘) # content = f1.read() # print(content) # f1.close() # f2 = open(‘小猪佩奇.jpg‘, mode=‘wb‘) # f2.write(content)
gbk utf-8
对于字母,数字,特殊字符的编码都是引用ascii码,所以可以直接转化。
s1 = ‘123abc*‘
b1 = s1.encode(‘utf-8‘)
s2 = b1.decode(‘gbk‘)
print(s2)
05,文件操作常用方法
# readlable() writeable()判断是否可读或者可写
# f1 = open(‘log1‘, encoding=‘utf-8‘) # print(f1.readable()) # print(f1.writable()) # f1 = open(‘log1‘, encoding=‘utf-8‘,mode=‘r+‘) # print(f1.readable()) # print(f1.writable())
# seek: 按照字节去调整光标
# f1 = open(‘log1‘, encoding=‘utf-8‘) # f1.seek(3) # print(f1.read()) # f1.close()
# tell 告诉光标的位置
# f1 = open(‘log1‘, encoding=‘utf-8‘) # print(f1.tell()) # print(f1.read()) # print(f1.tell()) # f1.close()
#truncate 对原文件进行截取内容,以字节形式,只能在a模式下使用。
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘a‘) # f1.truncate(3) # f1.close()
#文件操作的另一种写法
# with open() as 不用主动关闭 f1.close()
# 同一open 可以操作多个文件
# with open(‘log1‘, encoding=‘utf-8‘) as f1: # print(f1.read()) # with open(‘log1‘, encoding=‘utf-8‘) as f1,\ # open(‘log2‘,encoding=‘utf-8‘, mode=‘w‘) as f2: # print(f1.read()) # f2.write(‘666‘) # with open(‘log1‘, encoding=‘utf-8‘) as f1: # content = f1.read() # f1.close() # pass # with open(‘log1‘, encoding=‘utf-8‘,mode=‘w‘) as f2: # f2.write(‘333‘)
06,文件的改。
1,打开原文件 old_file,将原内容读取到内存。
2,创建一个新文件new_file。
3,将原内容通过你改写形成新内容,写入到新文件。
4,将原文件删除。
5,将新文件重命名成原文件。
#方法一,原文件内容不打,可以用此方法,但是此方法还是很low。
# import os # with open(‘change‘, encoding=‘utf-8‘) as f1,\ # open(‘change.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2: # old_content = f1.read() # new_content = old_content.replace(‘alex‘, ‘SB‘) # f2.write(new_content) # os.remove(‘change‘) # os.rename(‘change.bak‘, ‘change‘)
# 方法2
import os with open(‘change‘, encoding=‘utf-8‘) as f1, open(‘change.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2: for line in f1: new_line = line.replace(‘SB‘, ‘alex‘) f2.write(new_line) os.remove(‘change‘) os.rename(‘change.bak‘, ‘change‘)
标签:写法 escape 补充 ror 培训 pos lin mode odi
原文地址:https://www.cnblogs.com/HoneyTYX/p/9010843.html