Argparse:“sys.argv [1]”和“args.input”有什么区别?

时间:2018-01-16 09:40:27

标签: python python-3.x hierarchy argparse sys

我正在学习如何使用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 .运行代码

但没有任何作用。

我知道我很接近,我写了一种被评论的Frankenstein代码。

我哪里错了?我觉得我离解决方案太近了......

1 个答案:

答案 0 :(得分:0)

感谢@match提供正确的提示。 问题是我在argparse定义中使用k

k

代码现在可以使用了!