python排序文件的内容并写入同一文件

时间:2014-09-15 04:52:52

标签: python sorting

我有一个包含以下行的文件

aaaaa
bbbbbb
cccc
dddddd
1234
33444
00000

我想对文件进行排序并将输出写入同一文件。到目前为止我的代码:

file = open("a")
column = []
for line in file:
    column.append(int(line.split("\t")[3]))
column.sort()
print(column)
file.close()

2 个答案:

答案 0 :(得分:1)

将排序逻辑提取到函数

是个好主意
def keyfunc(line):
    ## You need to fix this function, since your code doesn't really
    ## make sense for your sample data
    try:
        return int(line.split("\t")[3])
    except:
        return 0

with open("a") as fin:
    content = sorted(fin, key=keyfunc)

with open("a", "w") as fout:
    fout.writelines(content)

对于此示例,您的数据文件实际上没有排序,因为每行都会有索引错误。我建议您如果需要更多帮助来制定应该进入keyfunc

的内容,那么您应该制作更好的样本数据

答案 1 :(得分:-1)

这很简单。以下是您可能想要的样本

# open the file
file = open(filename,'r') # the "r" means for reading
contents = [] # make a list to store our contents in
for line in file: # loop through each line in the file
    contents.append(line) # and load in its contents
sort(contents) # this is in place, it does not return anything
file.close()
file = open(filename,'w')
file.write(''.join([str(item)+'\n' for item in contents]))
file.close() # publishes the content

这是自定义比较器上的stackoverflow页面。您需要查看它以了解如何以特定方式对列表进行排序。

Python: sort an array of dictionaries with custom comparator?

你也应该看看倒数第二行 - 它有点复杂,它使用列表推导将项目推回一个字符串。一个更简单的方法就是循环并编写每个项目,但我想我会给你一个有趣的版本:)

请注意,这只会在每行加载您的文件。要以不同的标准查看文件,您需要使用其他方法。一种天真的方式是加载整个文件并根据你描绘的任何东西进行拆分。

你应该看看https://docs.python.org/2/tutorial/inputoutput.html开始了解python中的文件IO,这很简单。