如何仅使用Windows命令行在Python模块中运行函数?

时间:2011-07-15 23:19:57

标签: python command-line

为了澄清,我正在编写的Python模块是一个自编写的.py文件(名为 converter ),而不是Python库标准的文件。

无论如何,我想以某种方式重载我的功能,以便输入

 converter file_name

会将文件名发送到

 def converter(file_name):
    # do something

我一直在广泛搜索Google和StackOverflow,但找不到任何不需要使用特殊字符(如$)或命令行选项(如-c)的内容。有谁知道怎么做?

4 个答案:

答案 0 :(得分:2)

您可以使用PyInstaller之类的东西来创建py文件中的exe。

在python中使用参数:

import sys

if __name__ == "__main__":
    converter(sys.argv[1])

答案 1 :(得分:1)

您可以输入Windows shell:

python converter.py file_name.txt

将参数提供给python中的sys.argv列表。所以要访问它们:

import sys
sys.argv[0] # this will be converter.py
sys.argv[1] # this will be file_name.txt

在您要运行的文件的底部,添加:

if __name__ == "__main__":
    converter(sys.argv[1])

要有第二个参数:

python converter.py file_name1.txt file_name2.txt

这将是结果:

import sys
sys.argv[0] # this will be converter.py
sys.argv[1] # this will be file_name1.txt
sys.argv[2] # this will be file_name2.txt

如果您正在执行许多复杂的命令行选项,我建议使用类似the builtin argparse(适用于2.7 / 3.2 +)或argparse on pypi(适用于2.3+)的内容。

答案 2 :(得分:0)

我能想到的唯一方法是创建一个同名的批处理文件,并在其中使用提供的参数调用python脚本。

使用批处理文件,您不必指定扩展名(.bat),因此它可以让您更接近您想要的位置。

答案 3 :(得分:0)

此外,如果没有任何编译.pyexe,您可以使脚本“可执行”,这样如果您发出myscript param param之类的命令行,系统将搜索{ {1}}并为您运行,就像它是myscript.py.exe文件一样。

要实现此目的,请配置计划运行脚本的计算机:

  1. 确保您设置了文件关联(.bat到python解释器,也就是说,如果您在资源管理器中双击您的脚本 - 它将被执行)。通常,这由Python安装程序配置。
  2. 修改.py环境变量(查看COMSPEC内部属性)以包含My Computer扩展名以及.PY.EXE等。
  3. .COM菜单开始新的cmd.exe以使用变量的新值。任何程序的旧实例都只会看到旧值。
  4. 如果您在同一台计算机上运行许多脚本,则此设置可能很方便,如果您将脚本分散到许多计算机上,则不那么方便。在后一种情况下,您最好使用py2exe转换器将您的应用程序捆绑到一个自给自足的包中(甚至不需要安装python)。