Python 对文件内容进行排序

Python 对文件内容进行排序,python,file,sorting,unix,Python,File,Sorting,Unix,在unix中(具体地说,我使用的是bash),我可以轻松地对文件的内容进行排序;鉴于我有一份文件: chris@chris:~$ cat testSort.txt 3 1 test01 8 2 test02 6 3 test03 7 4 test04 1 5 test05 运行sort将返回基于第1列的排序值 chris@chris:~$ sort testSort.txt

在unix中(具体地说,我使用的是
bash
),我可以轻松地对文件的内容进行排序;鉴于我有一份文件:

chris@chris:~$ cat testSort.txt 
3       1       test01
8       2       test02
6       3       test03
7       4       test04
1       5       test05
运行
sort
将返回基于第1列的排序值

chris@chris:~$ sort testSort.txt
1       5       test05
3       1       test01
6       3       test03
7       4       test04
8       2       test02
我可以根据需要将其结果导入文件或程序;在python中有没有这样简单的方法,或者我需要读入文件,将其保存为某种数据结构,然后再次保存

混乱


我不知道为什么会收到反对票——我问是否有一种像unix中那样简单的方法(即一个单词的命令)来实现排序。我甚至提供了一个例子来说明我想要什么?这在何种程度上意味着“这个问题没有研究成果,不清楚或没有用处”

你想多容易做到这一点?这将按字典顺序进行排序,但您可以通过将附加的
函数传递给
排序
,将其修改为基于任意条件进行排序

with open('input') as f:
    sorted_file = sorted(f)

#save to a file
with open('output') as f:
    f.writelines(sorted_file)

#write to stdout
import sys
sys.stdout.writelines(sorted_file)

你想多容易做到这一点?这将按字典顺序进行排序,但您可以通过将附加的
函数传递给
排序
,将其修改为基于任意条件进行排序

with open('input') as f:
    sorted_file = sorted(f)

#save to a file
with open('output') as f:
    f.writelines(sorted_file)

#write to stdout
import sys
sys.stdout.writelines(sorted_file)

你认为
sort
是如何实现的?这里是用Python重新实现的
sortsys.stdout.writelines(sorted(sys.stdin))
@MartijnPieters-我完全不知道
sort
实际上是如何实现的works@ChrisW:考虑排序文件内容所需的内容。如果最后一行先被排序,那么
排序
如何知道这一点而不首先将整个文件读入内存?@larsmans——这是公平的<代码>排序
不仅仅是一个简单的字典排序,如果你愿意的话。它可以根据文件中特定字段的数字输入进行排序,等等(当然,所有这些都可以在python中完成),但它并没有那么简单。您认为
sort
是如何实现的?下面是
sort
在python中重新实现的:
sys.stdout.writelines(sorted(sys.stdin))
@MartijnPieters-我完全不知道如何实际排序works@ChrisW:考虑排序文件内容所需的内容。如果最后一行先被排序,那么
排序
如何知道这一点而不首先将整个文件读入内存?@larsmans——这是公平的<代码>排序不仅仅是一个简单的字典排序,如果你愿意的话。它可以根据文件中特定字段的数字输入进行排序,等等(当然,所有这些都可以在python中进行),但它并不是那么简单。看起来没有一行答案!回到阅读Python编程,因为我不太明白这个答案…@ChrisW——你是说
importsys;sys.stdout.writelines(已排序(打开('input'))
?这是用
连接的两行代码--但用这种方式编写代码确实不是一个好主意。我希望它跨平台,所以我知道这个答案不是一个好主意。让我印象深刻的是,它可以在unix中用1个单词完成,我只是想知道这是否可以在python中复制——答案显然是否定的!我将开始学习如何在中读取文件,因为这似乎是下一个阶段…@ChrisW——答案是跨平台的。这真的很难读懂,也很难弄明白到底发生了什么。@mgilson哦,我理解的比我想象的还要少!看来没有一行的答案了!回到阅读Python编程,因为我不太明白这个答案…@ChrisW——你是说
importsys;sys.stdout.writelines(已排序(打开('input'))
?这是用
连接的两行代码--但用这种方式编写代码确实不是一个好主意。我希望它跨平台,所以我知道这个答案不是一个好主意。让我印象深刻的是,它可以在unix中用1个单词完成,我只是想知道这是否可以在python中复制——答案显然是否定的!我将开始学习如何在中读取文件,因为这似乎是下一个阶段…@ChrisW——答案是跨平台的。这真的很难读懂,也很难弄明白到底发生了什么。@mgilson哦,我理解的比我想象的还要少!