[英]How to run convert this batch script so it can run on command line and be called by python?
[英]How to run batch command in my python script?
我必须在我的 Python 脚本中运行一行批处理命令。
目前,我将命令保存在.bat
文件中并使用subprocess
执行.bat
文件。 但我想省略.bat
文件并直接将命令包含在我的python
脚本中。 因为我可能需要针对不同的用例使用不同的 bat 文件。 我宁愿使用一个动态 python 脚本也不愿保存多个.bat
文件。
蝙蝠命令:
"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"
Python 脚本是:
import subprocess as sp
sp.call([r"C:\Users\kuk\Downloads\test.bat"])
我想要的是:
import subprocess
exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
input = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
output = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx"
cmd = '{} /s /a {} /o {}'.format(soft,var1,var2)
subprocess.call(cmd)
我不知道出了什么问题,但无法执行脚本。
任何帮助,将不胜感激!!
你的问题是模棱两可的。 如果我解释正确,你可以使用os.system
os.system
是一个 function,它从控制台执行命令。
import os
os.system('"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"')
不要使用input
作为变量名。 它是一个 python 内置 function。
subprocess.call
方法将一个列表作为参数。 在处理 shell 执行任务时,我喜欢使用shlex
库来引用参数并将命令拆分为列表。
注意:我已经有 12 年没有在 Windows 上执行脚本了,所以我不确定 shlex 与该平台的兼容性如何。
import shlex
import subprocess as sp
exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
in_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
out_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx"
params = tuple([shlex.quote(p) for p in (exe, in_file, out_file)])
command = f'%s /s /a %s /o %s' % params
sp.call(shlex.split(command))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.