python - argparse 错误“采用 0 个位置参数,但给出了 2 个”
问题描述
如果用户愿意,我想实现一个可以更改父目录的解析器。如果这不是必需的,我希望程序使用 Desktop 作为默认目录。现在,每次运行程序时都会要求用户更改目录。
我按照主管的示例将 argparse 放入 if name == ' main ' 中。我想这导致了这个错误,但我不知道该怎么做。
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop')
parent_dir = desktop
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--setparentdir',
default=desktop,
help='sets the parent directory')
args = parser.parse_args()
if args.setparentdir:
parent_dir = input('Enter your directory')
Enter your directory
Traceback (most recent call last):
File "export_with_parser.py", line 129, in <module>
download_contents(project_id, project_name)
TypeError: download_contents() takes 0 positional arguments but 2 were given
如果用户不输入 --setparentdir 程序应该使用默认目录,即桌面。
解决方案
根据您的描述,您不想--setparentdir
实际设置父目录。相反,您希望它确定是否input
将被使用。换句话说, args.setparentdir 应该是一个布尔值。布尔值通常由store_true
和store_false
动作控制。由于--setparentdir
不是直接设置父目录,所以它的默认不应该是desktop
,应该是False
,这是默认的store_true
。
所以:
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--setparentdir',
action='store_true',
help='Set the parent directory interactively')
args = parser.parse_args()
if args.setparentdir:
parent_dir = input('Enter your directory')
推荐阅读
- r - 使用 ggplot2 和 purrr 创建密度图;基于组的密度线颜色
- c# - 试图在我的程序中获取 .settings 文件
- java - addListener() 和 addCallback() 到 ListenableFuture 的区别
- asp.net - Excel中上传的下标和上标格式数据不显示
- python - 在python的选项中运行带有空格的子进程
- ios - 生成 xcframework 库时出现 xcodebuild 错误“不支持具有多个平台的二进制文件”
- python - 不能使用任何 Atom Python IDE 函数
- android - 如何在 ARCore 中获得点击姿势?
- java - 如何在 JUnit5 中测试 WireMockServer?
- javascript - 订阅主题完成时取消订阅