通过python启动shell命令

时间:2019-06-12 09:59:51

标签: python-3.x os.system

我正在尝试为文件列表执行命令外壳,所以我尝试了这段代码

import glob
import shutil
import os


def recursListPath(path, nth = 1):
list = []
for i in range (1, nth+1):
    currentpath = path + (i * "/*")
    for name in glob.glob(currentpath):
        list.append(name)
return list

version = "SPIRIT/1685-2009"
DirPath = "D:\\all-data"
list = recursListPath(DirPath, 4)
for item in list:
   if os.path.isfile(item):
      fichier=open(item, encoding="mbcs")
      for ligne in fichier :
        if version in ligne:
           print("'%s' 2009" % fichier.name)
           os.system("'%s' start C:\> script.sh -file textVersionChange.tcl -w wk -log convertversion.log -args" %fichier.name "converteddir" )
      fichier.close()

为每个文件启动控制台,但不生成任何内容 如何在os.system的命令中间使用变量?

1 个答案:

答案 0 :(得分:0)

这实际上不是os.system问题。 首先,我会在Windows上不工作,并且假设您的实际命令行正确吗? (C:\>在我看来有点奇怪)

我不得不说我实际上不确定如何做到这一点: "'%s' start C:\> script.sh -file textVersionChange.tcl -w wk -log convertversion.log -args" %fichier.name "converteddir"未返回语法错误。

我不确定您希望该命令的外观是什么,但是您可以更改字符串格式开头。

尝试:

"'{name}' start C:\> script.sh -file textVersionChange.tcl -w wk -log convertversion.log -args converteddir".format(name=fichier.name)

此外,我会考虑使用较新的subprocess module而不是os.system

然后您可以将命令行作为列表提供:

[fichier.name, "start", "C:\> script.sh", "-file", "textVersionChange.tcl", "-w", "wk", "-log", "convertversion.log", "-args", fichier.name, "converteddir"]

可以包含变量。