如何在 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 中使用参数运行应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

调试在 Docker 中运行的 python 应用程序

如何在 Windows 命令行中使用参数运行 Python 脚本

如何在python中记住其他程序实例变量[关闭]

python如何运行程序并向程序传入参数?

Azure 应用服务App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?

python里的rc是啥意思