使用os.system调用shell命令

时间:2013-11-27 18:16:16

标签: python system-calls

我正在尝试使用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命令中获取正确的值?

1 个答案:

答案 0 :(得分:4)

使用

sp = subprocess.Popen(["program", "arg"], stdout=subprocess.PIPE)
而是

,然后从文件sp.stdout中读取。有问题的程序可以是shell,您可以将复杂的shell命令作为参数传递给它(["/usr/bin/bash", "-c", "my-complex-command"])。