我在我的Python脚本中调用.exe文件时出错

2024-09-29 21:39:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用wxpython作为GUI,bash用于脚本。我必须使用子进程从Python脚本运行一个.exe文件。在

目的:必须将参数从GUI传递到.exe文件,并且没有检查它的权限。在

我遇到问题的部分代码是:

import subprocess
def OnBound(self,event):
lan1 = self.sc1.Getvalue() ##interger value
arg = ('home/proj/lic.exe')
subprocess.call([lan1, arg], shell = True)

每当我运行脚本时,都会出现以下错误:

^{pr2}$

我可能做错了什么?任何帮助/建议都会很有帮助,因为我是python新手。在


Tags: 文件代码self目的脚本bash权限参数
3条回答

我认为错误很明显:“execv()arg 2必须只包含字符串”,而您传递的是一个整数作为第一个参数。 可以使用str()将整数转换为字符串

{1要被调用的字符串}将被调用的第1个字符串}被传递。 因此,如果您想用参数123(或lan1的任何值)调用home/proj/lic.exe,那么应该切换顺序。在

subprocess.call([arg, str(lan1)], shell = True)

subprocess.call的第一个参数中的所有项都必须是字符串:

rc = subprocess.call(['/home/proj/lic.exe', str(lan1)])

此外,您不应该从GUI事件处理程序调用可能长时间阻塞的函数;它会使GUI冻结很长时间。您可以调用subprocess.Popen立即返回,并安排一个空闲回调来定期轮询子进程状态。在

我不知道你想完成什么,但是我可以用

import subprocess
subprocess.call([123, 'ls'], shell = True)

或者

^{pr2}$

在这两种情况下,我都将垃圾作为列表值之一传递(第一种情况是整数,第二种情况是元组)。在

代码中的注释告诉您lan1是一个整数,所以您尝试运行类似

123 home/proj/lic.exe

这没道理。在

同样,使用subprocess更简单:

subprocess.call("ls -l | grep test", shell=True) 

相关问题 更多 >

    热门问题