【发布时间】:2012-10-07 02:56:53
【问题描述】:
如果我从 Python 解释器或 Python 脚本调用脚本文件,我会收到错误 'No such file or directory' 并且 Linux 脚本不会执行。
如果我调用纯 Linux 命令,例如 subprocess.call('ls') 就可以了。
在“C”中,我会使用:system("");
Python 中的等价物是什么?
从我的 Python 脚本,在 Linux 计算机上,我需要调用执行构建的脚本。
subprocess.call 非常适合 Linux shell 命令,但是当我调用脚本时会得到 'No such file or directory'。
这是我调用的 Python 脚本行:
rtn_code = subprocess.call(['~/WindRiver/workspace/XPedite5570_SMP_VIP/build_MM_VxWorks'])
`build_MM_VxWorks` is a Linux script that uses VxWorks development tools to build a VxWorks kernel.
`build_MM_VxWorks` works okay from the Linux command line.
【问题讨论】:
-
您是否尝试过指定绝对路径而不是使用
~/表示法? -
~ 是外壳的一个特性。如果你不调用 shell,你就没有它。
-
你可以通过读取
os.environ['HOME']或pwd.getpwuid(os.getuid()).pw_dir的值来近似~的行为。 -
@FatalError 还有
os.path.expanduser -
这有效: import os os.system('./myscript') 也 os.system('~/primary/experiments/myscript') 但是, import subprocess subprocess.call('./myscript ') ...不起作用。为什么?
标签: python linux subprocess