我正在尝试为文件列表执行命令外壳,所以我尝试了这段代码
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的命令中间使用变量?
答案 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"]
可以包含变量。