Knight_day8
作者:互联网
- 初识文件操作
文件路径:d:abc.txt
绝对路径:从根目录开始
相对路径:当前文件夹
编码方式:utf-8,gbk,gb2312等
操作方式:只读,只写,写读,读写,追加等。
f = open(r'd:\abc.txt', encoding='utf-8', mode='r') content = f.read() print(content) f.close() ''' f:变量。也写作f_obj, f_handler, f_h, fh等,文件句柄。 open():python内置函数(内部调用的是相应系统的命令如Windows)
\发生歧义,1.在路径前加r 2.每个\变成\\ '''
流程:1.打开文件,产生文件句柄。
2.对文件句柄操作。
3.关闭文件句柄
总而言之,注意光标位置。
- 读:r, rb, r+, r+b
rb:文件操作中凡是带b,都是与非文字类文件相关的。(b为bytes,不用encoding)
r模式的读操作:
1.read() 全部
2.read(n) 指定读的字符数。rb模式下n为字节数
3.readline() 按行读,超过了读空白,可指定n读几个字符,n >= 当前行字符数,或不写 --> 全读。n < 当前行字符数 --> 读n个字符
#while循环实现读取全部内容 f = open(r'd:\123.txt', encoding='utf-8', mode='r') #先读取一行 res = f.readline() #不为空,开始循环 while res: print(res) res = f.readline()
4.readlines() 按行读,返回列表
5.for循环(1.内存中只占一条,避免全读内存不够 2.文件句柄是可迭代对象)
for line in f:
print(line.strip())
f.close()
r+:先读,光标移到到最后,再写,写在最后,光标也在最后。
先写,光标在开头,覆盖相应字节(注意是字节),再读,从覆盖写入的结尾开始读。
即,光标默认在开头。
- 写:w, wb, w+, w+b
没有文件就创建,有文件先清空,再写入
写入内容只能是str或bytes
#复制图片 #先读再写 f = open('hunian.jpg', mode='rb') content = f.read() f.close() f = open('xiaohu2.jpg', mode='wb') f.write(content) f.close() #利用with整合代码 #注意:with方法不需要close with open('hunian.jpg', mode='rb') as f1, open('xiaohu2.jpg', mode='wb') as f2: content = f1.read() f2.write(content)
w+:可写可读,不能只读,没有就创建,每次先清空再写入。
- 追加:a, ab, a+, a+b
没有文件就创建,有文件在内容最后追加,换行追加可以在追加内容前加换行符\n
a+:可写可读,没有文件就创建,默认光标在尾部,不管如何移动,强制末尾写入。
- 其他方法
readable():是否可读
writable():是否可写。返回T/F
seek():按字节位置移动光标。seek(0)移动到开头。seek(0, 2)移动到末尾(2代表从右向左)。注意点:有可能把光标移动到某个字符的字节中。
tell():返回光标左侧所有字节数。
truncate():把要截取的字符串提取出来,清空内容将提取的字符串重新写入文件中(按字节)。
writelines():将内容是字符串的可迭代数据写入文件,需同时满足。如全为字符串的列表。
标签:文件,day8,Knight,content,mode,句柄,open,光标 来源: https://www.cnblogs.com/hlzzhq/p/15876306.html