为了账号安全,请及时绑定邮箱和手机立即绑定

Windows不会将命令行参数传递给从shell执行的Python程序

Windows不会将命令行参数传递给从shell执行的Python程序

慕勒3428872 2019-08-31 15:43:00
如果我尝试直接将它们作为可执行命令从Windows命令shell执行,那么我无法将命令行参数传递给Python程序。例如,如果我有这个程序(test.py):import sysprint "Args: %r" % sys.argv[1:]并执行:>test fooArgs: []相比于:>python test.py fooArgs: ['foo']我的配置有:PATH=...;C:\python25;...PATHEXT=...;.PY;....>assoc .py.py=Python.File>ftype | grep PythonPython.CompiledFile="C:\Python25\python.exe" "%1" %*Python.File="C:\Python25\python.exe" "%1" %*Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超3个赞

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


[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]

@="\"C:\\Python25\\python.exe\" \"%1\" %*"

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


查看完整回答
反对 回复 2019-08-31
?
忽然笑

TA贡献1806条经验 获得超5个赞

我的设置是另一个注册表项,HKEY_CLASSES_ROOT\py_auto_file。提到的其他密钥也存在,但Windows出于某种原因使用了这个。


查看完整回答
反对 回复 2019-08-31
?
不负相思意

TA贡献1777条经验 获得超10个赞

对于Windows 7上的Python 3.3,我的设置是在另一个注册表项下; 我改变的关键是让参数得到通过


HKEY_USERS\S-1-5-21-3922133726-554333396-2662258059-1000_Classes\py_auto_file\shell\open\command


是的"C:\Python\Python33\python.exe" "%1"。我只附加%*了它。钥匙的价值现在是"C:\Python\Python33\python.exe" "%1" %*。


我有几个(至少五个)其他键的值"C:\Python\Python33\python.exe" "%1",但这是我改变的那个使它工作。


查看完整回答
反对 回复 2019-08-31
?
Helenr

TA贡献1780条经验 获得超3个赞

为了让它适合我,我不得不使用注册表路径:


HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

并添加了一个 %*


查看完整回答
反对 回复 2019-08-31
  • 4 回答
  • 0 关注
  • 753 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信