python - 子进程不执行 Rscript
问题描述
我需要从 Python 运行 Rscript 并等待它完成。据我所知,subprocess
比os.system(command)
.
这是我当前的代码:
import subprocess
command = "Rscript myscript.r -f 1"
subprocess.call([command])
# run some Python code
它给了我以下错误消息:
FileNotFoundError:[Errno 2] 没有这样的文件或目录:'Rscript myscript.r -f 1'
只是提到os.system(command)
效果很好,但它没有等到脚本myscript.r
完成。
解决方案
command
是命令行,而不是命令。传入command
包含 1 个元素的列表会尝试"Rscript myscript.r -f 1"
作为命令运行。
拆分为参数(手动,也允许传递包含空格的参数)是最好的方法:
subprocess.call(["Rscript","myscript.r","-f","1"])
os.system
请注意,它与(除了os.system
1)不安全 2)不处理引用大致相同)
所以它不会等待命令完成。在 Windows 上,我们可以尝试使用前缀cmd /c
来避免该命令分离:
subprocess.call(["cmd","/c","Rscript","myscript.r","-f","1"])
推荐阅读
- xml - XML 预览未显示任何内容
- docusignapi - 用于在 DocuSign 上上传文件的预签名 URL
- .htaccess - 重定向 301 整个域以及一些特定的 URL
- python - '连接中止。',错误(32,'断管')
- r - rforcecom.getObjectDescription 对来 salesforce 数据表有错误
- html - 如何使用 htaccess 将请求重定向到一个文件夹到一个新的子域?
- grpc - 损坏的文件是无效参数吗?
- c++ - 在浮点数之后计算下一个更高整数的有效方法?
- excel - Powershell 在 Excel 中查找和替换
- c# - 如何让嵌套结构访问其父类的字段而不使这些字段公开或内部?