直接通过命令行调用python文件

时间:2012-08-31 22:50:24

标签: shell windows-7 python-2.7

美好的一天,

我遇到了一些问题,一些Python应用程序没有在Windows 7中正确调用它们的依赖项。这些应用程序将直接调用它们的Python依赖项,而不是作为python.exe的参数。与更改依赖关系链中的每个文件以首先调用python命令相反,是否有任何方法可以直接调用Python文件并正确传递参数,或者这是对Python的错误调用?

注意:我已将python.exe设置为.py文件的默认程序

C:\Users\***>ftype | findstr -i python
Python.CompiledFile="C:\Python27\python.exe" "%1" %*
Python.File="C:\Python27\python.exe" "%1" %*
Python.NoConFile="C:\Python27\pythonw.exe" "%1" %*

C:\Users\***>assoc | findstr -i python
.py=Python.File
.pyc=Python.CompiledFile
.pyo=Python.CompiledFile
.pyw=Python.NoConFile

我写了一个Basic Argument-Parsing Python Script来解析命令行参数并将其作为问候打印回来。如果参数不存在,将要求一个参数作为原始输入输入。显式调用Python而不是这样做的结果显示在下面:

C:\Users\***\Desktop>python input.py --greeting="john"
john
The greeting is:  john

C:\Users\***\Desktop>input.py --greeting="john"
None
Give me the greeting. johnrom
The greeting is:  johnrom

2 个答案:

答案 0 :(得分:0)

我在搜索的前几次找不到答案,但我终于在另一个stackoverflow帖子中遇到了它。

来自the post

  

我想我解决了这个问题。由于某种原因,在第二个位置   注册表(除了存储在文件中的文件关联所示)   HKEY_CLASSES_ROOT \ Python.File \壳\开放\命令):

     

[HKEY_CLASSES_ROOT \应用程序\ python.exe \壳\开放\命令]   @ =“\”C:\ Python25 \ python.exe \“\”%1 \“%*”

     

这似乎是我系统的控制设置。注册表   上面的设置添加“%*”将所有参数传递给python.exe(它   由于某种原因在我的注册表中丢失了。)

在这行的末尾添加'%*'对我有用,虽然它似乎并不适合所有人。

答案 1 :(得分:0)

还有另一个需要更正的注册表项。根据{{​​3}}帖子,您需要修改

HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

"C:\PythonPath\python.exe" "%1" %*