Math Asked: 2020-01-13 09:26:41 +0800 CST 2020-01-13 09:26:41 +0800 CST 2020-01-13 09:26:41 +0800 CST 如何通过 Python 中的命令调用外部应用程序? 772 我需要调用与正在运行的python脚本 位于同一目录中的可执行文件。我需要知道如何通过带有一些参数的脚本中的命令来调用它。 在 Windows 命令行中,我这样做: miejecutable -p1 datos 最好有办法在 Python 2 和 3 中运行它。 python 2 Answers Voted Best Answer jachguate 2020-01-13T09:41:44+08:002020-01-13T09:41:44+08:00 答案翻译自:https ://stackoverflow.com/a/89243/255257 使用 stdlib 中的sobprocess 模块: from subprocess import call call(["miexecutable", "-p1", "datos"]) 版 值得一提的是,call它返回执行的程序或命令的退出码,你可以收集如下: return_code = subprocess.call(["miprograma.exe", "/parametro"]) 另一个特点是您可以通过系统 shell 进行调用,传递 shell=True 参数,如下所示: return_code = subprocess.call("echo Hello World", shell=True) 使用 subprocess 与 system 相比的优势在于它更灵活(您可以获得 stdout 和 stderr、“真正的”退出代码、更好的错误处理等)。 os.system 已弃用或即将弃用: https://docs.python.org/2/library/subprocess.html#replacing-older-functions-with-the-subprocess-module 对于一次性脚本或快速而肮脏os.system的解决方案,这就足够了: os.system("miexecutable -p1 datos") Omar 2020-01-13T09:44:32+08:002020-01-13T09:44:32+08:00 看起来很简单,你的脚本如下: import os #Varias líneas debajo result = os.system('archivo_ejecutable -p1 datos > salida_del_comando.log') if result == 0: print('Parece que todo bien') else: print('Revisar archivo: salida_del_comando.log para tener más detalle') 我将逐行解释: 在第 1 行中,我们导入操作系统模块。第 2 行是注释,第 3 行是您已经需要运行命令的位置,该函数os.system为我们提供了一个系统行,我们可以在该行上运行命令。 第 4 行保存命令的结果,第 5 行我们比较,如果命令的输出为 0,则说明系统执行该命令没有问题,第 6 行我们处理系统出现错误的情况。 如果您查看第 3 行,我们会告诉系统行,命令抛出的所有内容都将在文件 exit_del_command.log 中清空,以便获得可能失败的详细信息。 希望这可以帮到你。 编辑: 我忘记了@jachguate 评论了什么, os.system 即将在以下版本的 Python 中被替换,所以使用subprocess.call 编辑 2:如果你要使用subprocess.call记住还要添加参数shell=True,留下你的电话: subprocess.call('archivo_ejecutable -p1 datos > salida_del_comando.log', shell=True) #o también: commandlist = 'archivo_ejecutable -p1 datos > salida_del_comando.log'.split(' ') subprocess.call(commandlist, shell=True) 这样您就可以避免无法找到依赖于您所在当前系统的 shell/行的文件的问题。
答案翻译自:https ://stackoverflow.com/a/89243/255257
使用 stdlib 中的sobprocess 模块:
版
值得一提的是,
call
它返回执行的程序或命令的退出码,你可以收集如下:另一个特点是您可以通过系统 shell 进行调用,传递 shell=True 参数,如下所示:
使用 subprocess 与 system 相比的优势在于它更灵活(您可以获得 stdout 和 stderr、“真正的”退出代码、更好的错误处理等)。
os.system 已弃用或即将弃用:
https://docs.python.org/2/library/subprocess.html#replacing-older-functions-with-the-subprocess-module
对于一次性脚本或快速而肮脏
os.system
的解决方案,这就足够了:看起来很简单,你的脚本如下:
我将逐行解释: 在第 1 行中,我们导入操作系统模块。第 2 行是注释,第 3 行是您已经需要运行命令的位置,该函数
os.system
为我们提供了一个系统行,我们可以在该行上运行命令。第 4 行保存命令的结果,第 5 行我们比较,如果命令的输出为 0,则说明系统执行该命令没有问题,第 6 行我们处理系统出现错误的情况。
如果您查看第 3 行,我们会告诉系统行,命令抛出的所有内容都将在文件 exit_del_command.log 中清空,以便获得可能失败的详细信息。
希望这可以帮到你。
编辑: 我忘记了@jachguate 评论了什么, os.system 即将在以下版本的 Python 中被替换,所以使用
subprocess.call
编辑 2:如果你要使用
subprocess.call
记住还要添加参数shell=True
,留下你的电话:这样您就可以避免无法找到依赖于您所在当前系统的 shell/行的文件的问题。