Python 在Jupyter笔记本中设置自动R脚本

Python 在Jupyter笔记本中设置自动R脚本,python,r,python-3.x,Python,R,Python 3.x,我有一个R脚本,它执行很多繁重的操作,偶尔还会崩溃 我希望使用Python运行它,如果失败,请重试(尝试次数上限合理) 理想情况下,我会在Python3.x中这样做 这是我目前的代码: #! /usr/bin/Rscript (I added this code to the top of my file) subprocess.call("/pathto/MyrScript.r") 我的脚本打印出一堆有用的诊断信息 这就是我希望能够做到的: 从Python启动脚本[完成

我有一个R脚本,它执行很多繁重的操作,偶尔还会崩溃

我希望使用Python运行它,如果失败,请重试(尝试次数上限合理)

理想情况下,我会在Python3.x中这样做

这是我目前的代码:

#! /usr/bin/Rscript (I added this code to the top of my file)

subprocess.call("/pathto/MyrScript.r")
我的脚本打印出一堆有用的诊断信息

这就是我希望能够做到的:

  • 从Python启动脚本[完成]
  • 如果脚本在运行时失败,请重试[未完成]
  • 我在想我也许可以用这样的东西做2

    try:
      subprocess.call("/pathto/MyrScript.r")
    except:
      i+=1
      if i > 5: 
        print("Tried >5 times")
      else: 
        subprocess.call("/pathto/MyrScript.r")
    

    你能帮我讲讲#2吗?谢谢

    通常在shell中,如果执行成功,则返回0。任何大于0的返回码都表示某种类型的错误

    您可以在这里阅读有关bash输出的更多信息(假设您正在使用linux env):

    因此,如果子流程调用成功,它应该返回0

    output=1
    同时输出=0:
    尝试:
    输出=子流程调用('fileaddress')
    除:
    i+=1
    打印(f'trued{i}次)
    

    您可以将参数传递给R脚本,但您必须查看R脚本以接受来自终端的参数。实际上,您不是从python传递参数,而是通过子流程模块,python正在执行bash命令。因此,如果您能够使用参数从终端执行R脚本,那么您可以使用子流程执行相同的R脚本,但将命令和参数作为列表传递,例如:
    subprocess.call(['ls','-l']

    我可以将python中的参数传递到R脚本中吗?我最终使用了R脚本命令并从R终端运行