Python的I/O优化
我正在写一个程序,它需要处理多行代码。目前,我是一个一个地处理每一行——每当一行进来时,我会先去掉多余的空格,然后存储它,接着再通过 sys.stdin.readline() 方法请求下一行。我在想,有没有办法提高我的效率,因为现在我的程序运行得太慢了。如果我一次性读取所有行(我知道我预计会有多少行),把它们存到一个列表里,然后再处理,这样会不会更快?如果是这样,有没有什么内置的函数可以快速高效地做到这一点?
谢谢
2 个回答
0
readlines()
这个方法会读取文件的内容,并自动把它按换行符分割成一个列表。然后你可以对这个列表里的每一项使用rstrip('\r\n')
方法,去掉每行末尾的换行符。或者,如果你知道换行符是什么(通常在*nix系统中是'\n'),你可以把读取和分割的方法连在一起用,比如这样:.read().split('\n')
。
示例代码:
file_ob = open(path/to/file,'r')
# Method 1
file_list = file_obj.readlines()
for f in file_list
clean = f.rstrip('\r\n')
#do something with clean
# Method 2
clean_list = file_obj.read().split('\r')
# do something with clean_list
1
你可以通过一次性读取所有行来加快速度,然后把它们去掉多余的空格,放进一个列表里,像这样:
import sys
lines = sys.stdin.read().splitlines(False)
if lines:
# process lines list....