如果脚本未使用“python file.py”运行,Python“argparse”不会获取任何参数

发布于 2025-01-13 12:54:06 字数 391 浏览 1 评论 0原文

我使用 argparse 非常简单,如下所示:

#file.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--test", action='store_true')
args = parser.parse_args()

从命令行运行文件时出现问题:如果我使用 python file.py --test 运行它,则参数正确传递,但如果我像 file.py --test 一样运行它,则不会传递任何参数。

我通常以后一种方式运行一些文件,因为我将它们添加到 Windows 路径中,以便在任何地方不受限制地运行它们。有什么方法可以传递这些论点以便它们得到认可吗?

I'm using argparse very simply like this:

#file.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--test", action='store_true')
args = parser.parse_args()

The problem comes when running the file from the command line: if i run it with python file.py --test the arguments are passed correctly, but if i run it like file.py --test no arguments are passed.

I usually run some files in the latter way because I add them to the windows path to run them anywhere without limitations. Is there a way I can pass the arguments so that they are recognized?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

睡美人的小仙女 2025-01-20 12:54:06

我的机器上也遇到过同样的问题。

这个问题似乎是由于我在安装 python 之前使用“打开方式...”(...我的文本编辑器)从资源管理器上下文菜单中打开了一个 python 文件。
这个选择通过关键字“py_auto_file”被记住在Windows注册表中。

我通过手动删除 Windows 注册表中名为“py_auto_file”的所有键/值解决了该问题

检查 python 文件是否仍然与 py.exe 正确关联。

assoc .py=Python.File

ftype Python.File="c:\Windows\py.exe" "%L" %*

您还可以在管理控制台中

I have had the same problem on my machine.

This issue seems to come from the fact that I opened a python file from the explorer context menu with "Open With..." (...my text editor) before installing python.
This choice was remembered in the windows registry though the keyword "py_auto_file".

I solved the problem by removing by hand all the keys / values named "py_auto_file" in the windows registry.

You can also check that python files are still correctly associated to py.exe with

assoc .py=Python.File

ftype Python.File="c:\Windows\py.exe" "%L" %*

in an admin console.

甜嗑 2025-01-20 12:54:06

我认为问题是你的文件没有 shebang。我添加了 shebang,它对我有用。
test.py:

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--test", action='store_true')
args = parser.parse_args()
print(args.test)

使用python3 test.py --test运行
输出:

True

使用 ./test.py --test
运行
输出:

True

请记住确保您的文件在 Linux 和 Windows 中都可执行。

I think the problem is that there is no shebang of your file. I added shebang and it works for me.
test.py:

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--test", action='store_true')
args = parser.parse_args()
print(args.test)

Run with python3 test.py --test
The output:

True

Run with ./test.py --test
The output:

True

Remember to make sure your file is executable in both Linux and Windows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文