在 R 中:使用 system() 传递带空格的 python 命令

In R: use system() to pass python command with white spaces

我正在尝试通过命令提示符将 python 命令从 R(在 Windows x64 Rstudio 上)传递到 python 脚本。如果我直接在 cdm 中输入它会工作,但如果我使用 R 函数 system() 通过 R 进行输入则不会。格式是(这就是我在 windows cmd shell/promt 中的确切写法):

pyhton C:/some/path/script <C:/some/input.file> C:/some/output.file

这在 cmd promt 中工作,并使用输入文件(在 <> 中)运行脚本并给出输出文件。我以为我在 R 中可以做到:

system('pyhton C:/some/path/script <C:/some/input.file> C:/some/output.file')

但这给出了 python 关于

的错误
error: unparsable arguments: ['<C:/some/input.file>', 'C:/some/output.file']

似乎 R 或 windows 对空格的解释与我简单地将行写入(或复制粘贴)到 cmd promt 时不同。怎么做。

来自?system

This interface has become rather complicated over the years: see system2 for a more portable and flexible interface which is recommended for new code.

System2 接受参数 args 作为您命令的参数。

所以你可以试试:

system2('python', c('C:\some\path\script', 'C:\some\input.file', 'C:\some\output.file'))

上 Windows:

R 文档在这一点上不是很清楚(或者可能只有我一个人),无论如何似乎在 Windows 上建议的方法是使用 shell() 这是不如 systemsystem2 原始,而且它似乎与 redirection operators(如 < 或 >)一起使用效果更好。

shell ('python C:\some\path\script < C:\some\input.file > C:\some\output.file')

所以这个命令是做什么的:

  1. 致电python
  2. 告诉python执行脚本C:\some\path\script。这里我们需要使用'\'转义'\'。
  3. 然后我们使用“<”运算符和 input.file
  4. 将一些输入传递给脚本
  5. 我们将输出重定向(使用“>”)到输出文件。