我有一个cmd文件“file.cmd”,包含100行命令
范例
pandoc --extract-media -f docx -t gfm "sample1.docx" -o "sample1.md"
pandoc --extract-media -f docx -t gfm "sample2.docx" -o "sample2.md"
pandoc --extract-media -f docx -t gfm "sample3.docx" -o "sample3.md"
我正在尝试使用脚本运行这些命令,这样我就不必转到文件并单击它。 这是我的代码,它不会产生任何输出:
file1 = open('example.cmd', 'r')
Lines = file1.readlines()
# print(Lines)
for i in Lines:
print(i)
os.system(i)
您不需要逐行读取cmd文件。您可以简单地尝试以下操作:
或者使用subprocess模块:
例如:
myfile.cmd:
script.py:
cmd将以以下方式打开:
您可以通过以下方式了解返回退出代码来调试问题:
注意:os.system通过在C中调用
system()
工作,在命令之后最多只能使用65533个参数(因此这是一个16位的问题)。再给出一个参数将导致返回代码32512 (which implies the exit code 127).
subprocess
模块提供了更强大的工具,用于生成新进程并检索其结果;使用该模块比使用此函数(os.system('command')
)更可取因为它是一个命令文件(
cmd
),并且只有shell可以运行它,所以shell参数必须设置为true。由于要将shell参数设置为true,因此命令必须是字符串形式,而不是列表使用
Popen
方法生成一个新进程,使用communicte等待该进程(您也可以超时)。如果您希望与子进程通信,请提供PIPES
(参见mu示例,但您不必!)下面是python 3.3及更高版本的代码
对于较旧的python版本
在这两种情况下(python版本),如果您不需要
timeout
功能,也不需要与子进程交互,那么只需使用:相关问题 更多 >
编程相关推荐