我正在尝试使用os.system
来调用外部(管道)shell命令:
srcFile = os.path.abspath(sys.argv[1])
srcFileIdCmd = "echo -n '%s' | cksum | cut -d' ' -f1" % srcFile
print "ID command: %s" % srcFileIdCmd
srcFileID = os.system(srcFileIdCmd)
print "File ID: %s" % srcFileID
输出
ID command: echo -n '/my/path/filename' | cksum | cut -d' ' -f1
File ID: 0
但是当我跑步时
echo -n '/my/path/filename' | cksum | cut -d' ' -f1
在命令行上手动,我得到2379496500
,而不是0。
我需要更改什么才能从shell命令中获取正确的值?
答案 0 :(得分:4)
使用
sp = subprocess.Popen(["program", "arg"], stdout=subprocess.PIPE)
而是,然后从文件sp.stdout
中读取。有问题的程序可以是shell,您可以将复杂的shell命令作为参数传递给它(["/usr/bin/bash", "-c", "my-complex-command"]
)。