mev*_*ron 5 python glob command-line-arguments argparse
我目前有一个脚本,它通过sys.argv变量使用文件globbing,如下所示:
if len(sys.argv) > 1:
for filename in sys.argv[1:]:
Run Code Online (Sandbox Code Playgroud)
这非常适合处理一堆文件; 但是,我也想在argparse模块中使用它.所以,我希望我的程序能够处理如下内容:
foo@bar:~$ myScript.py --filter=xyz *.avi
Run Code Online (Sandbox Code Playgroud)
有没有人试图这样做,或者有一些关于如何进行的指示?
mac*_*mac 16
如果我找到你的话,你的问题是将一个文件列表与一些标志或可选参数一起传递给命令.如果我找对你,那么你必须利用argparse中的参数设置:
文件p.py
import argparse
parser = argparse.ArgumentParser(description='SO test.')
parser.add_argument('--doh', action='store_true')
parser.add_argument('files', nargs='*') # This is it!!
args = parser.parse_args()
print(args.doh)
print(args.files)
Run Code Online (Sandbox Code Playgroud)
上面的注释行通知解析器期望一个未定义的数字> = 0(nargs ='*')的位置参数.
从命令行运行脚本会提供以下输出:
$ ./p.py --doh *.py
True
['p2.py', 'p.py']
$ ./p.py *.py
False
['p2.py', 'p.py']
$ ./p.py p.py
False
['p.py']
$ ./p.py
False
[]
Run Code Online (Sandbox Code Playgroud)
观察文件在列表中的位置,无论它们是多少还是只有一个.
HTH!
| 归档时间: |
|
| 查看次数: |
8565 次 |
| 最近记录: |