读写文件(python)
写文件
f = open("information.csv","w",encoding='UTF-8')
(1)readline函数 读取文件 节省内存,不需要一次性把文件内容放入内存中但是速度相对较慢
#-*- coding: UTF-8 -*-
f = open("information.csv","r",encoding='UTF-8') # 返回一个文件对象
line = f.readline() # 调用文件的 readline()方法 ,已经读取f中的一行
while line:
#循环开始的时候从第二行开始
print(line, end = '') # 在 Python 3中使用
line = f.readline()
f.close()
(2)一次读取多行数据(读取速度快,占用内存大)
#-*- coding: UTF-8 -*-
f = open("information.csv","r",encoding='UTF-8')
while 1:
lines = f.readlines(10000)
if not lines:
break
for line in lines:
print(line)
f.close()
(3)使用fileinput模块读
import fileinput
for line in fileinput.input("information.csv","r",encoding='UTF-8'):
print(line)
(4)
with open("information.csv", 'r') as f:
#如果是路径/会被转义,加 r,如r'/path/to/file'
print(f.read())
(5)
python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。
每种方法可以接受一个变量以限制每次读取的数据量。这三种方法是把每行末尾的’\n’也读进来了,它并不会默认的把’\n’去掉,需要我们手动去掉。
-
read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
-
readlines() 一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。
-
readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
test1.txt
1
22
333
4444
55555
(1)readlines()读取多行,并放在列表里面
with open('test1.txt', 'r') as f1:
list1 = f1.readlines()
print(list1)
#输出['1\n', '22\n', '333\n', '4444\n', '55555']
(2)read()
with open('test1.txt', 'r') as f1:
list1 = f1.read()
print(list1)
#输出
1
22
333
4444
55555
(3)readline()读取一行
with open('test1.txt', 'r') as f1:
list1 = f1.readline()
print(list1)
#输出
1
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:
try:
f = open('test1.txt', 'r')
print(f.read())
finally:
if f:
f.close()