python学习第三天回顾之文件
| 一,编码补充: |
内存中用的是unicode编码,(程序都需要加载到内存才能运行,所有内存应该是尽可能的保证程序运行速度)
硬盘或网络传输用的是UTF-8,网络I/O延迟或磁盘I/O延迟要远大于UTF-8的转换延迟,而且I/O应该是尽可能的节省带宽保证数据传输的稳定性。
转换形式:
文件在硬盘中存储的编码格式--->内存中所用的编码格式----> 打开文件时所用软件的编码格式
| 二、文件: |
python中可以用open()函数来打开文件。
格式:
open(filename,打开方式,编码方式)
示例:
1 f = open("abc.txt",r,encoding="utf-8") 2 # 将打开的abx.txt的文件,读取后给f,放入内存中 3 data = f.read() #由f.read()读取文件内容 4 f.close() #有打开就有关闭,如果不关闭,将一直在内存中存放。
读写模式:
r: 只读模式打开(如果文件不存在,则报异常)
w: 可写模式打开(如果文件不存在则创建文件)
a: 追加(写)模式打开(如果文件不存在则创建文件)
r+: 可读,写文件(如果文件不存在,则报异常)
w+: 可写,读文件(如果文件不存在则创建文件)
a+: 追加,读模式(如果文件不存在则创建文件)
也可以用 rb,wb,ab,rb+,wb+,ab+方式打开,这样则是以二进制方式打开。
file.seek()函数: 使光标移动到某个位置
参数: seek(offset[,whence]) offset 一般为正数,表示将光标移到到第几个位置,若使用whence参数,则只能有0,1,2这三个参数值,0表示将光标移到开头,1表示光标所在的当前位置,2表示光标移到到末尾。
file.read([size]): 从文件中读取内容。 若使用size则表示读取size的长度 。如:read(3) 读取3个字符。
file.readline([size]): 从文件中读取一行。 若使用size则表示读取size的长度 。如:readline(3) 读取这一行的前3个字符。
file.readlines([size]): 从文件中读取所有行。 若使用size则表示读取开始到size所在的列表 。如:readlines(3) 读取第一行,并以列表形式返回。
file.readable(): 检测是否以读文件的形式打开的文件。
file.write(): 写入函数内的字符串内容,只能是字符串
file.writelines(): 写入的字符串,可以是列表形式字符串,如: writelines(["123","abc","123"])
file.writeable(): 检测是否以写文件的形式打开的文件
file.tell(): 返回光标在文件当前位置
file.truncate([size]): 截取文件,截取的字节通过size指定,默认为当前文件位置。
示例:
修改文件:
import os
f = open("abc.txt","r",encoding="utf-8")
write_f=openg("bcd.txt","w",encoding="utf-8")
for i in readlines():
if "123123" in i:
i="234369"
write_f.write(i)
print(i)
f.close()
write_f.close()
os.remove("abc.txt")
os.rename("bcd.txt","abc.txt")
另一种打开文件方式:
1、 with open("abc.txt","r",encoding="utf-8") as read_f:
read_f.seek(0,2)
While True:
line = read_f.readline().strip()
if line:
print("新增加一行",line)
2、 with open("abc.txt","r",encoding="utf-8") as read_f,\
open("abc.txt","w",encoding="utf-8") as write_f:
data=read_f.read()
write_f.write(data)
以读的模式打开文件进行读取,同时以写的模式打开文件,对文件进行写入。

浙公网安备 33010602011771号