Using argparse in conjunction with sys.argv in Python

I currently have a script that uses drag and drop files using a variable sys.argvas follows:

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

This works great for processing multiple files; however, I would like to use this with a module argparse. So, I want my program to be able to handle something like the following:

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

Has anyone tried to do this or had some guidance on how to proceed?

+5
source share
2 answers

, . , 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)

undefined number >= 0 (nargs ='*') .

script :

$ ./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
[]

, , , .

!

+15

:

import sys
import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-v", "--verbose", help="increase verbosity", action="store_true")
    args, unknown = parser.parse_known_args()
    for file in sys.argv:
        if not file.startswith("-"):
            print(file)

, ( , ).

+1

All Articles