我需要将多个python命令传递给一个系统调用(在R中),我的语法有问题。
我想要结合起来:
system("python "file1.py" -f "module_to_load1.py" -o "output_loc_file1"")
system("python "file2.py" -f "module_to_load2.py" -o "output_loc_file2"")
简化代码:
pystr="python -c print('hi')"
system(paste(pystr, " && ", pystr, sep=""))
我想要的输出是:
hi
hi
如果我直接在命令提示符中输入代码,我会得到所需的输出:
python -c print('hi') && python -c print('hi')
>> hi
>> hi
然而,系统调用只返回一个'hi',我无法弄清楚我的愚蠢错误是什么。任何帮助将不胜感激。
答案 0 :(得分:0)
您最好将其存储为脚本,而不是尝试管理凌乱的系统调用:
file:my.py
print "hi"
print "hi"
然后从R:
> system("python my.py")
hi
hi
如果您的实际代码更复杂,您可以生成python代码并将其写入您随后调用的文件。
答案 1 :(得分:0)
你不能像这样排列引号 - 嵌入式引号需要转义。而不是
system("python "file1.py" -f "module_to_load1.py" -o "output_loc_file1"")
DO
system("python \"file1.py\" -f \"module_to_load1.py\" -o \"output_loc_file1\"")
或者只是省略引号,因为文件名不包含麻烦的字符:
system("python file1.py -f module_to_load1.py -o output_loc_file1")
关于编写正确的Python脚本的建议仍然很好。