Argparse:"sys.argv[1]" 和 "args.input" 有什么区别?
Argparse: what is the difference between "sys.argv[1]" and "args.input"?
我正在学习如何使用 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 .
的代码
但没有任何效果。
我知道我很接近,我写了一种带有注释的科学怪人代码。
我哪里错了?我觉得我离解决方案很近了...
感谢@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)
代码现在可以工作了!
我正在学习如何使用 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 .
但没有任何效果。
我知道我很接近,我写了一种带有注释的科学怪人代码。
我哪里错了?我觉得我离解决方案很近了...
感谢@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)
代码现在可以工作了!