处理内存中的文件

时间:2013-07-24 06:35:59

标签: python

我有一个文件,每行都有

Name1 name2 name3

我可以逐行阅读,分割每一行,处理行并逐行输出处理。

但是我想读取整个文件,按中间列排序,然后以输入所用的相同格式输出整个排序文件。

我的第一次尝试在读入每个行时分割每个行以生成元组列表,然后使用key =进行排序,然后重新加入每个元组并逐行输出。

有更多的pythonic方式吗?

1 个答案:

答案 0 :(得分:4)

这样的事应该做​​:

with open('datafile') as fin:
    lines = list(fin)
    lines.sort(key=lambda line: line.split()[1])

with open('outfile','w') as fout:
    fout.writelines(lines)

一些注意事项:

  • 我的排序键有点难看。但是,这里的优点是它保留了与输入文件中完全相同的行。如果我们拆分线然后排序,代码可能会更漂亮,但我们需要在输出上正确连接分割线(加上,空格的运行可能会丢失)

  • outfile可以是与datafile相同的文件名,以便“有效地”进行更改

  • 如果您需要支持引用字段(field1 "field 2" field3),那么您需要查看csv模块。