按升序排序文件

时间:2014-11-30 20:37:31

标签: python file sorting

我按照随机顺序 myInput01.txt 给了一个每行一个名字的文件,我需要按升序排序并输出有序名称​​每行一个名字到名为 myOutput01.txt 的文件。

myhandle = open('myInput01.txt', 'r')  
aLine = myhandle.readlines()  
sorted(aLine)  
aLine = myOutput01.txt  
print myOutput01.txt

3 个答案:

答案 0 :(得分:1)

所以,这部分还可以:

myhandle = open('myInput01.txt', 'r')  
aLine = myhandle.readlines() 

您打开一个文件(在myhandle中获取文件处理程序)并将其行读到aLine

现在,有一个问题:

sorted(aLine) 

sorted函数对aLine参数没有任何作用。它返回一个已排序的新列表。因此,要么使用aLine.sort()进行就地排序,要么将sorted函数的输出分配给另一个变量:

   sorted_lines = sorted(aLine)

看看this sorting tutorial

此外,这两行很成问题:

aLine = myOutput01.txt  
print myOutput01.txt

您正在使用名为aLine的内容覆盖您的myOutput01.txt变量,该内容对于脚本是未知的(它是什么?它在哪里定义?)。您需要以与读取文件类似的方式继续操作。您需要打开处理程序并使用该处理程序将 stuff 写入文件作为参考。

你需要:

   mywritehandle = open('myOutputO1.txt', 'w')
   mywritehandle.writelines(sorted_lines)
   mywritehandle.close()

或者,为了避免必须明确调用close()

with open('myOutputO1.txt', 'w') as mywritehandle:
    mywritehandle.writelines(sorted_lines)

您应该熟悉file objects,并注意myOutput01.txt"myOutput01.txt"非常不同。

答案 1 :(得分:1)

对于未来的访问者来说,在Python中执行此操作的最简单,最简洁的方法是(假设排序不会破坏您的系统内存):

with open('myInput01.txt') as fin, open('myOutput01.txt', 'w') as fout:
    fout.writelines(sorted(fin))

答案 2 :(得分:0)

outputFile = open('myOutput01.txt','w')
inputFile = open('myInput01.txt','r')
content = inputFile.readlines()
for name in sorted(content):
    outputFile.write(name + '\n')
inputFile.close()
outputFile.close()