我正在编写一个Python(2.5)脚本,它将搜索一个文件夹,获取一个特定的文件,然后将该文件和一个命令传递给Windows中的CMD shell。这需要使用命令program.exe /rptcsv <file being created> <file being used>
完成。此外,必须从C:\Program Files(x86)\Reporter文件夹执行.exe,因此工作目录会发生更改。在
我的问题是:我需要Python搜索一个特定的文件(fnmatch),然后将整个命令传递给shell。正确完成后,进程将在后台运行,而不启动GUI。
我看过关于stdin的帖子。stdout等等,而且我不需要任何管道返回-我只需要Python来传递整个过程。现在发生的情况是Python启动GUI,但是无法传递包含变量的完整命令。有办法吗?
我仍然是python00b,所以请原谅任何明显的错误。在
MC01 = 'WKST01*.bat'
MC02 = 'WKST02*.bat'
files = os.listdir(FOLDER)
MC01_CMD = fnmatch.filter(files, MC01)
MC01_CSV = "MC01.csv"
exe = ("reporter.exe /rptcsv", MC01_CSV, MC01_CMD)
os.chdir("C:\Program Files (x86)\Reporter")
os.system("exe")
编辑:在我之前的代码中,我使用手术室步行在文件夹中:
^{pr2}$因为我切换了工作目录,所以它在C:\ProgramFiles(x86)\Reporter中搜索MC01_CMD文件,(当然)它不在那里。有没有一种方法可以在不创建新变量的情况下连接pathname和MC01_CMD,这样它就得到了MC01_CMD的正确位置?在
os.system接受单个字符串作为命令。在您的例子中,这是字符串
"exe"
。您需要连接fnmatch.filter
返回的文件名,使用" ".join(exe)
,然后调用os.system(command)
。注意缺失的“inos.system(command)
。在要在树中查找文件,只需将
os.walk
调用的基文件夹(绝对路径)与basedir和文件名连接起来。您也可以在os.walk
期间过滤文件名。在变量不能在字符串文本中展开。因此
os.system("exe")
与在cmd中输入exe
并按enter键相同。在所以我猜正确的代码是:
相关问题 更多 >
编程相关推荐