【发布时间】:2014-02-26 13:23:50
【问题描述】:
我在使用 subprocess.call() 执行 shell 脚本时遇到问题,我在 Python 控制台中进行了这个测试,试图找出问题所在:
import subprocess
subprocess.call(["touch", "/tmp/out.txt"])
这工作并在 tmp 文件夹中创建文件。但是,这两个调用都不起作用:
subprocess.call(["sh", "/tmp/test.sh"])
subprocess.call(["/tmp/test.sh"])
/tmp/test.sh:
#!/bin/bash
touch out.txt
exit 0
基本上,从 subprocess.call() 执行脚本不会产生任何输出。我授予文件和文件夹的完全权限以避免任何问题。似乎问题可能与执行脚本的用户有关,但它与第一种情况下的用户相同,它正在工作。 知道可能是什么问题吗?
顺便说一句,我使用的是 Ubuntu 12.04 LTS,Python 2.7.4。
提前致谢。
【问题讨论】:
-
这应该在你的 cwd 上创建一个
test.sh,而不是你的/tmp。 -
不确定你的意思。我希望在 /tmp 文件夹中创建文件 out.txt。我在访问脚本文件时没有收到任何错误,因此路径是正确的,但是文件没有被创建。
-
"...从 subprocess.call() 执行脚本不会产生任何输出" - 你的 shell 脚本不包含任何应该产生任何输出的东西,所以我不确定为什么会这样令人惊讶...
标签: python linux ubuntu subprocess