“有什么区别?”系统argv[1] “和”参数输入"?

2024-04-25 08:04:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但什么都不管用。在

我知道我很接近,我写了一个弗兰肯斯坦的代码,有注释。在

我哪里错了?我觉得我离解决问题很近了。。。在


Tags: path代码pytestimportparserinputos
1条回答
网友
1楼 · 发布于 2024-04-25 08:04:52

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

#!/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",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)
print(os.path.basename(path))
dirlist(path)

代码现在起作用了!在

相关问题 更多 >