我正在研究一个python项目,该项目需要从文件中读取字符串,按字母顺序排序,然后将其写入另一个文件。
我已经有一个可以运行的程序,但是效率低下,我想知道如何改进它。
这是我的代码:
def sorter(list):
for i in range(len(list)):
for j in range(len(list) - 1 ):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
return list
def main():
infile = open( 'text.txt', 'r' )
data = infile.read()
list = data.split()
newList = []
for item in list:
newList.append(item.lower())
sorter(newList)
with open( 'text2.txt', 'w' ) as f:
for item in newList:
f.write(" " + item)
main()
答案 0 :(得分:0)
几件事:
仅使用f.readlines()
(https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects),即可更简洁地读取文件中的行。
分别应在两个文件上with
,以便释放不再需要的资源:
def main():
with open( 'text.txt', 'r' ) as infile:
data = infile.read().split()
with open( 'text2.txt', 'w' ) as f:
for item in sorted(data):
f.write(" " + item)
main()
但是,此实现需要读取内存中的整个文件。如果您需要消耗大量数据(千兆字节),那么采用更复杂的方法可能会更好。