【发布时间】:2018-06-24 23:32:42
【问题描述】:
我正在学习如何使用 argparse,这对我来说是一个迷宫。
我有一个有效的代码:如果我运行 python Test.py .,它会使用此代码打印层次结构中的所有文件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import argparse
import sys
import glob
#parser = argparse.ArgumentParser()
#parser.add_argument('-input', dest='input',help="input one or more files",nargs='+',metavar=None
#args = parser.parse_args()
def dirlist(path, c = 1):
for i in glob.glob(os.path.join(path, "*")):
if os.path.isfile(i):
filepath, filename = os.path.split(i)
print ('----' *c + filename)
elif os.path.isdir(i):
dirname = os.path.basename(i)
print ('----' *c + dirname)
c+=1
dirlist(i,c)
c-=1
#path = os.path.normpath(args.input)
path = os.path.normpath(sys.argv[1])
print(os.path.basename(path))
dirlist(path)
但是,由于我想了解 argparse 的工作原理,我想使用 python Test.py - input . 运行代码
但没有任何效果。
我知道我很接近了,我已经写了一种科学怪人的代码,它被注释了。
我哪里错了?我觉得我离解决方案很近了......
【问题讨论】:
-
请将文本作为文本发布,而不是截图
-
我不知道这条评论是否对你有帮助,但如果你想了解 argparse 是如何工作的,你可以随时look at source code。
-
args.input将是一个列表,因为nargs='+'而sys.argv[1]将是一个字符串,我相信。 -
@FrancescoMantovani 如果可以,我会的。
-
我不知道为什么有人会发布一段纯文本作为截图。如果您的计算机上有一段文本,则将其作为文本粘贴到您的问题中(必要时在
<pre>块中)应该比截屏更省力。如果您的程序输出对您的问题很重要(我认为这是因为您已经包含了它),为什么要防止(例如)本网站上的盲人能够阅读它?
标签: python python-3.x hierarchy argparse sys