【发布时间】:2017-10-03 21:38:25
【问题描述】:
我正在尝试使用 shell 命令从中提取一个变量,我想在我的 python 程序的其余部分中使用它。例如,此代码尝试使用subprocess.call 和os.system。前者给我一个错误,而后者不会产生任何东西,而如果我不在我的 shell 命令中使用变量,两者都可以正常工作。
import subprocess
import os
# ...
x="05/May/2017"
print 'Date =',x
subprocess.call(['echo Hello World from method 1'], shell=True)
os.system('echo Hello World from method 2')
print "Month from method 1 ="
subprocess.call(['echo $x | cut -f2 -d/'])
print "Month from method 2 ="
m=os.system('echo $x | cut -f2 -d/')
print m
问题出在哪里,我该如何解决?
【问题讨论】:
-
x是 Python 脚本的变量。它不是环境变量。因此,在 shell 中执行时会失败 -
怎么样 -
os.system('echo %s | cut -f2 -d/' %x)? -
这里根本没有理由使用外部进程。
month = x.split('/')[1]。是否有一个更好的例子可以证明subprocess.call的正确使用? -
@chepner 这是更复杂地使用 shell 脚本命令的简化示例(它可能有
sed、awk等以及多个管道)。 -
@kuro 可以,但是
m=os.system('echo %s | cut -f2 -d/' %x)给了我0而我使用print m。
标签: python shell subprocess os.system