我需要能够在没有文件扩展名的情况下重命名的Python中执行.exe文件(例如,让我们说.joe - 它不代表我所知道的任何内容)
我们说我已经" HelloWorld.exe"然后我将其重命名为" HelloWorld.joe"并且需要执行它。
环顾四周,os.system通常用于执行.exe文件,但是我没有能够在没有.exe扩展名的情况下使用它。
该文件无法重命名为.exe扩展名(或任何内容),在此"场景"中,我无法访问可执行文件的源代码。
答案 0 :(得分:2)
你试过subprocess.call
吗?适合我。
Docs
例如:
#renamed from MobilePASS.exe, runs the program
import subprocess
subprocess.call(["d:/MobilePASS.ubi"])
答案 1 :(得分:2)
我无法想象打破Windows哲学的正当理由。 Microsoft总是说,在其系统上,文件扩展名确定了文件的类型及其用法。已经有很多交叉平台程序,例如在类Unix系统上命名为firefox
的firefox,在Windows系统上命名为firefox.exe
。
修改
话虽这么说,Windows接受你给它的命令,只要它是正确的可执行格式。因此,如果您创建了一个程序HelloWorld.exe
并将其重命名为HelloWorld.joe
:
HelloWorld.joe
时启动程序(在Windows XP和Windows 7上测试)os.system
或subprocess
模块启动它(由eryksun确认) 您不能对严重命名文件(在Microsoft的意义上)使用 os.system
调用,因为在幕后,os.system
使用cmd.exe
。它是一个Microsoft程序,它查看文件扩展名以了解如何处理它,并且永远不会执行(作为exe)没有exe扩展名的文件。
出于完全相同的原因,您将无法将子进程模块与 shell=True
一起使用。但是当shell=False
时,它会直接调用CreateProcess
接受任何名称作为有效可执行文件的名称(前提是......),如zeller所述。