我想实现一个解析器,如果用户愿意,它可以更改父目录。如果不需要,我希望程序将“桌面”用作默认目录。现在,用户每次运行程序时都被要求更改目录。
按照我的主管的示例,如果 name ==' main ',我将argparse放入其中。我想这是导致此错误的原因,但是我不知道该怎么办。
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,则程序应使用默认目录,即桌面。
答案 0 :(得分:1)
根据您的描述,您不希望--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')