【问题标题】:Error when calling a file from python从python调用文件时出错
【发布时间】:2014-03-11 17:42:03
【问题描述】:

我想从 python 脚本调用 R 程序。

我写了以下内容:

os.system("cat " + variableName + " | code.R")

返回错误:sh: 1 : code.R: not found cat:写入错误:管道损坏

不过,我确定 R 文件的名称。

为什么它不起作用?

【问题讨论】:

  • 我不知道 *.R 程序。但是... code.R 是二进制文件还是必须被解释的脚本?
  • @RaydelMiranda 必须解释的脚本
  • code.R 文件是否在您调用 python 脚本的同一目录中?
  • variableName 中有什么内容?
  • 也许这会有所帮助:stackoverflow.com/questions/4106565/…

标签: python


【解决方案1】:

所以,如果code.R 是一个必须被解释的脚本,那么您必须构建到解释器而不是脚本的管道。您收到 Broken PIPE 错误,因为 code.R 本身不知道如何处理命令行参数。

另一方面,如果您想要将variable 值存储在代码中。R 您必须将| 更改为>>

os.system("cat" + 变量名 + ">> code.R")

编辑:因为它是从终端工作的,试试这个:

import subprocess
input = open(variableName, "r")
result = suprocess.call(["code.R"], stdin=input)    # result is the return code for the command being called.

更多详情请参阅subprocess.call

【讨论】:

  • 实际上,code.R 将变量作为输入。困扰我的是,从终端, cat 变量 | code.R 完美运行。我想从我的 python 脚本中调用这个命令,但由于某种原因它不起作用......
  • 问题就解决了。谢谢大家的帮助
【解决方案2】:

code.R 在当前工作目录中吗?是否可执行?你能从 shell 运行 cat xxx | code.R 并让它正常工作,而不是运行你的 python 程序吗?

【讨论】:

  • 对所有这些问题都是肯定的(对于可执行部分,ls -lrt 给出 -rwxr-xr-x。我已经从另一个目录执行了 code.R,然后将其复制到我的 python 脚本所在的目录位于)
  • os.system() 调用之前立即执行print os.getcwd() 吗?
猜你喜欢
  • 2016-04-03
  • 2021-08-15
  • 2015-09-19
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
相关资源
最近更新 更多