运行 Rscript 通过 Python 使用 os.system() 或 subprocess()
Running Rscript via Python using os.system() or subprocess()
我遇到问题 运行使用 os.system() 或 subprocess() 通过 Python 设置 Rscript。
通过 python 使用 os.system() 到 运行 命令通常对我来说很好(例如 gdalwarp.exe),但对 Rscript.exe 就不行。
我能看到的唯一区别是路径中的空格。
通过将路径放在引号中,在 CMD-window 中很容易解决路径中的空格问题。
执行以下命令成功。
"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"
但我坚持 Python。
到目前为止我用 python:
尝试了什么
os.system("C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r'"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"')
subprocess.call([r'C:/Program Files/R/R-3.0.2/bin/Rscript.exe', r'D:/.../otsu_Script.R'])
有人看到我做错了什么吗?
提前致谢,
艾克
在对这么简单的问题动了脑筋之后。我决定将 RStatistics 重新安装到没有空格或点的路径,例如:
C:/R/bin/Rscript.exe
。
现在
subprocess.call(["C:/R/bin/Rscript.exe", "D:/otsu_Script.R"] )
或
os.system("C:/R/bin/Rscript.exe D:/otsu_Script.R")
工作正常。
应该在两天前尝试过...
...但无论如何我现在是一只快乐的猴子:-)
现在可能已经太晚了,我已经看到你解决了这个问题,但我也遇到了类似的问题(尽管在 Linux 系统中),它现在可能对其他人有帮助;尽管在 terminal/command-line.
中直接起作用,但在 python 中调用此命令时不起作用
os.system("R CMD BATCH ./read_lengths_batch.R")
我尝试了很多解决方案,包括 subprocess
和其他解决方案,但发现它比这更容易。在我的例子中,我知道它在 Windows 中可能有所不同,我只需要在调用结束时添加一个 &
到后台的 运行。不知何故,R 似乎会关闭 Python 脚本而不是执行它的工作。
os.system("R CMD BATCH ./read_lengths_batch.R &")
奇怪的是,如果在我的文件夹中复制带有 .txt
扩展名的相同文件,它也能正常工作:read_lengths_batch.R
和 read_lengths_batch.txt
.
希望对大家有所帮助!
我遇到问题 运行使用 os.system() 或 subprocess() 通过 Python 设置 Rscript。
通过 python 使用 os.system() 到 运行 命令通常对我来说很好(例如 gdalwarp.exe),但对 Rscript.exe 就不行。
我能看到的唯一区别是路径中的空格。
通过将路径放在引号中,在 CMD-window 中很容易解决路径中的空格问题。 执行以下命令成功。
"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"
但我坚持 Python。 到目前为止我用 python:
尝试了什么os.system("C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r'"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"')
subprocess.call([r'C:/Program Files/R/R-3.0.2/bin/Rscript.exe', r'D:/.../otsu_Script.R'])
有人看到我做错了什么吗? 提前致谢, 艾克
在对这么简单的问题动了脑筋之后。我决定将 RStatistics 重新安装到没有空格或点的路径,例如:
C:/R/bin/Rscript.exe
。
现在
subprocess.call(["C:/R/bin/Rscript.exe", "D:/otsu_Script.R"] )
或
os.system("C:/R/bin/Rscript.exe D:/otsu_Script.R")
工作正常。
应该在两天前尝试过...
...但无论如何我现在是一只快乐的猴子:-)
现在可能已经太晚了,我已经看到你解决了这个问题,但我也遇到了类似的问题(尽管在 Linux 系统中),它现在可能对其他人有帮助;尽管在 terminal/command-line.
中直接起作用,但在 python 中调用此命令时不起作用os.system("R CMD BATCH ./read_lengths_batch.R")
我尝试了很多解决方案,包括 subprocess
和其他解决方案,但发现它比这更容易。在我的例子中,我知道它在 Windows 中可能有所不同,我只需要在调用结束时添加一个 &
到后台的 运行。不知何故,R 似乎会关闭 Python 脚本而不是执行它的工作。
os.system("R CMD BATCH ./read_lengths_batch.R &")
奇怪的是,如果在我的文件夹中复制带有 .txt
扩展名的相同文件,它也能正常工作:read_lengths_batch.R
和 read_lengths_batch.txt
.
希望对大家有所帮助!