标签:大文件读取 pre 内容 改变 基本 break 创建 一个 文件读写
文件打开针对当前的工作目录。
可以使用os.chdir() 来改变工作目录
1.手动挡,需要手动关闭
f = open(‘1.py‘, ‘r‘) print(f.read()) f.close()
2.自动挡,使用with管理上下文,自动关闭
with open(‘1.py‘, ‘r‘) as f: print(f.read())
# 基本三种模式
r 以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
w 以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
a 以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
# 扩展模式
r+ 在r的基础上增加了可写功能,文件指针指向开头
w+ 在w的基础上增加了可读功能, w+,跟w一样,增加了可读功能。
a+ 在a的基础上增加了可读功能,不管文件指针在哪,都移到末尾
在上面这几种模式中,都可以混搭一个b模式,以二进制的方式进行读写。
保证在扩平台或其他操作,读写正确。 在lunux下会忽略b,默认就是二进制读取
直接read(),获取全部,一次性存入内存中。返回一个字符串。 针对大文件出错
指定size读取,可以解决大文件读取出错。
while True: block = f.read(1024) if not block: break
每次读取一行
while True: line = f.readline() if not line: break
读取全部的行,构成一个list,通过list来对文件进行处理,但是这种方式依然会造成MemoyError
for line in f.readlines(): ....
with open(filename, ‘r‘) as flie: for line in file: ....
写操作就比较的简单了,两种方法
参数为字符串
参数为一个序列,比如列表
with open(‘2.py‘, ‘w+‘, encoding=‘utf-8‘) as f:
f.write(‘我是中国人‘)
print(f.tell()) # 使用字节来计算,一个汉字3字节,输出15
f.seek(0)
print(f.read(3)) # 使用字符来计算,输出 ‘我是中‘,因为读的时候有空格或其他符号(1个字节会错乱)
标签:大文件读取 pre 内容 改变 基本 break 创建 一个 文件读写
原文地址:https://www.cnblogs.com/louhui/p/9061870.html