如何在 Python 中使用参数运行应用程序?
Posted
技术标签:
【中文标题】如何在 Python 中使用参数运行应用程序?【英文标题】:How to run application with parameters in Python? 【发布时间】:2011-10-25 07:44:49 【问题描述】:我需要运行一个应用程序(二进制文件)并使用 Python 代码传递参数。一些参数代表 Python 文件处理过程中得到的字符串。
for i in range ( len ( files ) ) :
subprocess.call(["test.exe", files[i]]) //How to pass the argument files[i]
谢谢...
更新问题:
也许我不明白在 Python 3 中传递参数。没有参数的代码运行正常
args = ['test. exe']
subprocess.call(args)
但是带参数的代码会报错:
args = ['test. exe']
subprocess.call(args, '-f') //Error
错误:
Error File "C:\Python32\lib\subprocess.py", line 467, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python32\lib\subprocess.py", line 652, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
【问题讨论】:
【参考方案1】:您需要做的就是将它包含在参数列表中,而不是作为单独的参数:
subprocess.call(["test.exe", files[i]])
【讨论】:
【参考方案2】:关于您更新的问题:您的子流程的参数不会作为单独的参数传递给 call();相反,它们作为单个字符串列表传递,如下所示:
args = ["test.exe", "first_argument", "second_argument"]
原始回复: 您拥有的代码将为文件中的每个元素创建一个单独的进程。如果这是您想要的,您的代码应该可以工作。如果你想同时调用所有文件的程序,你需要连接你的列表:
args = ["test.exe"] + files
subprocess.call(args)
【讨论】:
【参考方案3】:args = ['test. exe']
subprocess.call(args, '-f') #gives Error
应该是:
args = ['test.exe', '-f']
subprocess.call(args)
命令行参数都应该在 subprocess.call 的第一个参数的单个列表中。调用的第二个参数是 bufsize,它应该是一个整数(这就是你得到那个特定错误的原因)
【讨论】:
请注意,在 python 3.5+ 中,您应该使用subprocess.run(...)
而不是 .call(...)
。以上是关于如何在 Python 中使用参数运行应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 命令行中使用参数运行 Python 脚本
Azure 应用服务App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?