python - 在 Python 中结合使用 argparse 和 sys.argv

标签 python command-line-arguments glob argparse

我目前有一个脚本,它通过 sys.argv 变量使用文件 globbing,如下所示:

if len(sys.argv) > 1:
        for filename in sys.argv[1:]:

这非常适合处理一堆文件;但是,我也想将它与 argparse 模块一起使用。所以,我希望我的程序能够处理如下内容:

foo@bar:~$ myScript.py --filter=xyz *.avi

有没有人试过这样做,或者对如何进行有一些指示?

最佳答案

如果我没听错,您的问题是将文件列表连同一些标志或可选参数传递给命令。如果我没看错,那么您只需要利用 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)

上面的注释行通知解析器期望一个未定义的数字 >= 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
[]

观察文件在列表中的排列方式,无论它们是多个文件还是一个文件。

喂!

关于python - 在 Python 中结合使用 argparse 和 sys.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423895/

相关文章:

python - 如何使用生成器中的值填充 2D Python numpy 数组?

python - 使用 python selenium 下载

php - 通过命令行将数组从 php 传递到 R

java - 如何使用多个不同的输入文件自动运行java中的同一个类

python - 我不明白 Python 中的 'from'

python - Django 1.5 中缺少元类

java - 从命令行获取参数

python - glob.glob(...) 应该优于 os.listdir(...) 还是相反?

bash - 这个 bash 脚本如何知道我当前目录中的文件?

python - 矢量化 np 逻辑 : zeroing out in z axis above point