【发布时间】:2012-11-18 04:44:33
【问题描述】:
我正在尝试使用 subprocess.call() 调用不在本地 Python 目录中的 .exe 文件。命令(我在 cmd.exe 中输入)如下:"C:\Program Files\R\R-2.15.2\bin\Rscript.exe" --vanilla C:\python\buyback_parse_guide.r
脚本运行,执行我需要做的事情,并且我已确认输出正确。
这是我的 python 代码,我认为它会做同样的事情:
## Set Rcmd
Rcmd = r'"C:\Program Files\R\R-2.15.2\bin\Rscript.exe"'
## Set Rargs
Rargs = r'--vanilla C:\python\buyback_parse_guide.r'
retval = subprocess.call([Rcmd,Rargs],shell=True)
当我在 Python 控制台中调用 retval 时,它返回 1 并且 .R 脚本没有运行,但我没有收到任何错误。我很确定这是一个非常简单的语法错误...帮助?非常感谢!
【问题讨论】:
-
文件路径中的空格可能会导致问题。将 R 安装在没有空格的目录路径中。
-
我不知道这是什么原因,但我会尝试将安装移动到不同的目录并报告回来。谢谢。
-
我将我的 R 安装移动到一个没有空格的文件夹,重新尝试,仍然没有。
-
如果您
cd进入 Python 脚本所在的目录而不是 R 脚本所在的目录,命令行是否有效? -
您是否尝试过使用
os.system而不是 wim 建议的subprocess.call? (这不是一个好的修复,但它是一个很好的调试步骤。)你能把一些日志记录到 R 脚本中,看看为什么它会提前返回吗?或者使用--verbose运行它?
标签: python r python-2.7 subprocess