在Python shell中执行命令行或R脚本文件时出现问题

时间:2015-09-15 22:03:53

标签: python r shell ubuntu

我目前正在使用optparse包转换R脚本文件作为命令行可执行文件,它接受C风格的长标志和短标志。该程序在Ubuntu上运行。整个应用程序的执行由Python脚本控制,该脚本(1)首先使用os.systemchmod文件上调用script.R,如下所示:

import os 
os.system("chmod +x script.R; export PATH=$PATH:`pwd`")

然后我尝试使用os.system在Python中再次执行该程序,如下所示:

program_call = "script.R --arg1 1"
os.system(program_call) 

这将返回错误:

sh: 1: script.R: not found
32512

真正令人费解的是,这一天工作正常,现在却出错了。我正在和其他几个人一起开发这个应用程序,所以我想知道这是否可能是由于我的管理权限发生了变化。我已经验证所有必需的文件都包含在当前工作目录中。

1 个答案:

答案 0 :(得分:1)

第一次调用PATH时对os.system环境变量的更改不会延续到第二次调用,因为它是一个单独的shell进程。如果您改为在Python中修改PATH,它应该可以工作。尝试

os.environ['PATH'] += ":" + os.getcwd()
os.system("chmod +x script.R")
program_call = "script.R --arg1 1"
os.system(program_call)