python - 如何在Python中存储Linux调用的输出

原文 标签 python sorting subprocess

我正在编写一个脚本,用于根据特定列对文件进行排序。我尝试为此调用“ sort” Linux命令。我使用的代码是:

from subprocess import 
path_store = /homes/varshith/maf
input = path_store
field = "-k2"
store_output_in_new_file = ">"
new_path = path_store + "_sort.bed"
sorting = Popen(["sort", field, input, append, new_path], stdout=PIPE)


但这不能正常工作。在此先感谢您的帮助。

最佳答案

使用communication获取输出:

from subprocess import PIPE,Popen
sorting = Popen(["sort", field, output, append, new_path], stdout=PIPE)
out, err = sorting.communicate()  
print out


或者仅将check_output用于python> = 2.7:

sorting = check_output(["sort", field, output, append, new_path])


如果您只想编写排序的内容,则可以将stdout重定向到文件对象:

output = "path/to/parentfile"
cmd = "sort -k2 {}".format(output)
with open(new_file,"w") as f:
    sorting = Popen(cmd.split(),stdout=f)

关于python - 如何在Python中存储Linux调用的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28069792/

相关文章:

python - 卡住的Python文件无法访问“Save_File”

python - 如何在pycharm中相应地选择python版本?

python - 如何正确地转义python子进程中的特殊字符?

python - 如何使用 Popen.communicate(在 Linux 上)传递击键(ALT+TAB)?

python - Python 中的 C 函数 : Return an Array and Variables

python - OpenCV-平滑边框

javascript - 比较对象并仅获取所有对象中存在的对象

python - ValueError:太多值无法解包

python - 如何使用冒泡排序在 Python 3 中对列表进行排序和子排序

Python子进程Popen没有将所有参数发送到shell