Windows - 执行不带.exe扩展名的可执行文件(.exe)

时间:2014-11-19 12:29:03

标签: python windows

我需要能够在没有文件扩展名的情况下重命名的Python中执行.exe文件(例如,让我们说.joe - 它不代表我所知道的任何内容)

我们说我已经" HelloWorld.exe"然后我将其重命名为" HelloWorld.joe"并且需要执行它。

环顾四周,os.system通常用于执行.exe文件,但是我没有能够在没有.exe扩展名的情况下使用它。

该文件无法重命名为.exe扩展名(或任何内容),在此"场景"中,我无法访问可执行文件的源代码。

2 个答案:

答案 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

  • cmd.exe将在提示符下键入HelloWorld.joe时启动程序(在Windows XP和Windows 7上测试)
  • Python 2.7和3.4应该使用os.systemsubprocess模块启动它(由eryksun确认)

您不能对严重命名文件(在Microsoft的意义上)使用os.system调用,因为在幕后,os.system使用cmd.exe。它是一个Microsoft程序,它查看文件扩展名以了解如何处理它,并且永远不会执行(作为exe)没有exe扩展名的文件。

出于完全相同的原因,您将无法将子进程模块与shell=True一起使用。但是当shell=False时,它会直接调用CreateProcess接受任何名称作为有效可执行文件的名称(前提是......),如zeller所述。