我正在编写一个包含多行代码的程序。目前,我正在分别处理每一行 -> 当每一行进入时,我将其剥离、存储等,然后通过 sys.stdin.readline() 方法请求下一行。我想知道是否有办法提高我的效率,因为我的程序目前太慢了。一次取所有行是否更快(我知道我期待多少行),将它们存储在一个列表中然后处理它们?如果是这样,是否有任何内置功能可以提高速度并且可以有效地做到这一点?
谢谢
我正在编写一个包含多行代码的程序。目前,我正在分别处理每一行 -> 当每一行进入时,我将其剥离、存储等,然后通过 sys.stdin.readline() 方法请求下一行。我想知道是否有办法提高我的效率,因为我的程序目前太慢了。一次取所有行是否更快(我知道我期待多少行),将它们存储在一个列表中然后处理它们?如果是这样,是否有任何内置功能可以提高速度并且可以有效地做到这一点?
谢谢
您可以通过一次读取所有行然后将它们剥离并将它们放入如下列表中来加快速度:
import sys
lines = sys.stdin.read().splitlines(False)
if lines:
# process lines list....
该readlines()
方法将读取文件,并自动将其拆分为由换行符分隔的列表。然后,您可以将该rstrip('\r\n')
方法迭代地应用于列表。或者,如果您知道换行符(对于 *nix,通常是 '\n'),您可以像这样链接 read 和 split 方法.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