目录
1. Python读文件的相关函数
文件对象提供了三个“读”方法:file.read()
、file.readline()
和 file.readlines()
。
每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。file.read()
每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 file.read()
生成文件内容是最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。
file.readline
和file.readlines
比较相似,file.readlines
也可以一次读取整个文件,和file.read()
一样。file.readlines()
自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for... in ...
结构进行处理。file.readline()
每次只读取一行,通常比 file.readlines()
慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用file.readline()
函数。
通过readline输出,对于比较大的文件,这种占用内存比较小。
当用end=''
时,输出的时候才不会多输出空行。
逐行读取文件内容可以使用下面的代码:
输出结果为:
abc
def
ghi
jkl
['abc\n', 'def\n', 'ghi\n', 'jkl\n']
这里注意在for循环的时候必须为open('abc.txt')
,而不能是下面的样子:
这样会出现错误:
ValueError: Mixing iteration and read methods would lose data
因为在for line in f
的时候会隐式调用f.readline()
来读取f文件中的每一行的数据并存放到变量line中。如果在循环体中再次对f文件进行读写,就会出现混乱。
我们也可以用f.readlines()
或f.read()
函数来一次性读取f文件中的全部数据。
输出结果为:
abc
def
ghi
jkl
['abc\n', 'def\n', 'ghi\n', 'jkl\n']
2. Python写文件的相关函数
file.write()
是输出后光标在行末不会换行,下次写会接着这行写。file.writelines()
也可以像file.write()
写入一行数据,它还可以将python的list作为参数,写入到文件中,而file.write()
只能将python字符串写入文件。
Use the write() function to write a fixed sequence of characters -- called a string -- to a file. You cannot use write() to write arrays or Python lists to a file. If you try to use write() to save a list of strings, the Python interpreter will give the error, "argument 1 must be string or read-only character buffer, not list.
The writelines() function also writes a string to a file. Unlike write(), however, writelines can write a list of strings without error. For instance, the command nameOfFile.writelines(["allen","hello world"]) writes two strings "allen" and "hello world" to the file foo.txt. Writelines() does not separate the strings, so the output will be "allenhello world".
file.writelines
使用示例:
sample_list = [line+'\n' for line in sample_list]
outfile.wirtelines(sample_list)