Wai*_*ung 15 python windows command-line command-line-arguments
我有一堆用Python编写的脚本.我从Windows命令提示符运行它们
c:> my_script.py arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
这可以在多年前的每台计算机和每个Windows版本中使用.刚才我的Windows 7系统崩溃了.该脚本已加载并执行.但是没有一个参数传递给脚本.
为了说明这一点,我有一个名为py_echo.py的脚本:
from pprint import pprint as pp
import sys
if __name__ =='__main__':
pp(sys.argv)
Run Code Online (Sandbox Code Playgroud)
然后我用参数a,b,c执行它.他们都没有通过.
c:\Python27\Lib\site-packages>py_echo.py a b c
['C:\\0\\usr\\bin\\py_echo.py']
Run Code Online (Sandbox Code Playgroud)
如果我显式运行python.exe,则正确传递参数
c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
它以前工作过.在我从PC上卸载了一堆旧版本的Python解释器和模块之后,它才开始崩溃.重新安装Python没有帮助.我想知道我该怎么做才能解决这个问题?
我已经变得非常依赖我多年来建立的脚本.当他们休息时我觉得非常残疾:(
小智 9
我遇到了与Windows 7/Python相同的问题,并且最终发现我必须设置正确的文件关联并通过regedit更新两个注册表项.
这篇优秀的文章都描述了这一点:
http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
将答案移至 SO(而不是Jon 的答案中的链接):
修改以下两个注册表,以便将参数传递给 Python:
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
Run Code Online (Sandbox Code Playgroud)
添加%*到现有的"C:\PythonXX\python.exe" "%1",以便密钥现在看起来像:"C:\PythonXX\python.exe" "%1" %*。
来源:http : //eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
| 归档时间: |
|
| 查看次数: |
17710 次 |
| 最近记录: |