【发布时间】:2018-02-21 08:04:40
【问题描述】:
所以,我有一个旧脚本 ts,我需要使用多个字符串参数在循环中调用它:
#User supplied
ts = '/d1/user/script.py'
adir = '/d1/user/adir'
mfile = '/d1/user/script.nc'
outdir = '/d1/user/park/'
metens = glob.glob(adir + '/*.nc') #reads all files
for count, value in enumerate(metens):
runcom = [ts, mfile, metens[count], outdir + os.path.basename(metens[count])]
runcom = " ".join(runcom) #This creates a string of CL arguments
subprocess.call(['python2.7', runcom], shell=True)
现在,当我运行它时,它调用 python2.7 并打开 Python shell,而不是以python2.7 runcom 运行它。
如何让它作为脚本运行而不是打开 shell?
【问题讨论】:
-
是
ts代码还是文件路径? -
@JorgeLeitão 我添加了更多信息。 ts 是一个文件。
-
删除参数
shell=True?如果我运行python -c "import subprocess; subprocess.call(['python2.7', 'test.py'])",它会告诉我该文件不存在并退出 1。如果我创建该文件并再次运行,它将运行脚本。 -
我删除了
shell=True,我得到了`[Errno 2] No such file or directory`。即使所有必要的文件都存在。如果我只是直接将 python2.7 runcom 复制粘贴到命令行,它就可以工作。所以程序没有问题..
标签: python subprocess