【问题标题】:Call python script with args in Windows在 Windows 中使用 args 调用 python 脚本
【发布时间】:2017-03-25 18:29:39
【问题描述】:

我已经写了简单的脚本:

import sys
print("len(sys.argv): "+str(len(sys.argv)))    
if len(sys.argv) < 2:
    print("Wrong params. ex: 'touch.py file_name file_name2'")
    exit(1)    
for file in sys.argv[1:]:
    open(file, 'a')   

保存它,添加到PATH 并尝试像touch.py fileName 一样从CMD 调用,但是我的脚本只有一个参数——脚本的路径。那么,如何使用参数从 CMD 调用 python 脚本?仅对 Windows 有问题吗? linux呢?

【问题讨论】:

  • 我有想法将 python 脚本包装到批处理文件中,并将 args 传递给批处理
  • 这个问题没有帮助吗?

标签: python windows


【解决方案1】:

特别是在 Windows 中,您需要使用py -3py -2 来告诉操作系统使用python 运行文件。否则你只是在 cmd 中使用默认的exe 执行脚本。

py -3 touch.py fileName

对于其他操作系统,使用python2python3 代替py -3

【讨论】:

  • 不,voltento 的 .py 文件关联被破坏(由用户或 IDE 破坏),这是常见的情况。如果用户选择是Python.File,并且ProgId 已正确配置为运行py.exe "%1" %*,那么您可以直接在shell 中运行脚本,或者在资源管理器中双击它们。
【解决方案2】:

你需要使用python:

python touch.py fileName

不指定python,参数不传。


要使cmd.exe 传递参数(不指定python),您需要修改注册表。请参阅this answer Eli Bendersky's website

【讨论】:

  • Eli 的文章至少可以说是不完整的。如果 Explorer 的用户选择当前是自动创建的 ProgId,例如 Applications\python*.exepy_auto_file,那么您或代表您运行的软件已经成功地破坏了您的 Python 安装。您应该使用Python.File progid,其中包括正确的 py.exe“打开”命令(假设 Python 3 是使用 py 启动器安装的),并且还使用 shell 扩展库 pyshellext.amd64 配置了一个放置处理程序.dll。
猜你喜欢
  • 1970-01-01
  • 2018-06-06
  • 2021-07-23
  • 2018-06-26
  • 2018-08-05
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多