使用python脚本中的unix`sort`对文件进行排序

时间:2017-02-07 15:55:37

标签: python sorting unix

我正在用python处理一些数据,我想让脚本通过unix的sort命令运行一个结果文件,所以我不必自己动手。我可以在idiomatic python中写一篇小论文来做,但为什么

数据采用以下形式:

100 1   194.388119205
100 10  61.6006956954
100 50  42.795157377
10  50  73.5057139073
1   1   14550.8877483
1   10  1480.57562914

我已成功手动使用sort -k 1 -k 2 -g file.txt -o file.txt,但当我尝试使用os.systemsubprocess.Popensubprocess.call从python脚本运行时,它会{ {3}}到文件。

我已经检查过每个调用的当前工作目录是否正确/已设置,文件是否存在,并且我正在使用shell=True选项进行子进程方法。

是什么给出了?

编辑:那些想要它的代码

for file in glob.glob('lat*.txt'):
    cmd = "sort -k 1 -k 2 -g " + file + " -o " + file

    # This returns the correct directory
    print os.getcwd()
    assert(os.path.isfile(file))

    # If I run the output from this print statement in the shell, it works, 
    # so it's not the command or it's formatting
    print cmd

    # These do not sort the file
    os.system(cmd)
    subprocess.call(cmd, shell=True)

    # I've even tried a version of sort without the output parameter, 
    # to see if I could get the output from stdout, but again, nothing.
    cmd = "sort -k 1 -k 2 -g " + file 
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    for line in proc.stdout:
        print line
    proc.wait()

0 个答案:

没有答案