Python argparse открытие нескольких файлов - PullRequest
2 голосов
/ 29 января 2020

Я пытаюсь получить доступ к нескольким TXT-файлам с помощью argparse, и я наткнулся на проблему, которую я не могу решить.

    parser = argparse.ArgumentParser()
    parser.add_argument('filename', nargs='+'. type=argparse.FileType('r'))
    args = parser.parse_args()
    with open(args.filename, 'r') as files:
         #do stuff to files

, и я пытаюсь получить доступ с

РЕДАКТИРОВАТЬ:

python3 script.py file1.txt file2.txt

Но я получаю ошибку как таковую:

Traceback (most recent call last):
  File "script.py", line 34 in <module>
    with open(args.filename, 'r') as files:
TypeError: expected str, bytes or os.PathLike objects, not list

Я немного знаю, что это значит, но я просто не могу поставить мой палец на том, что делать дальше.

1 Ответ

1 голос
/ 29 января 2020

Из документации nargs :

'+'. Как и '*', все имеющиеся аргументы командной строки собираются в список. Кроме того, будет сгенерировано сообщение об ошибке, если не было хотя бы одного аргумента командной строки.

Итак, если вы хотите открыть несколько файлов, вам нужно просмотреть список с аргументами. Например:

parser = argparse.ArgumentParser()    
parser.add_argument('filename', nargs='+')
args = parser.parse_args()
for file_name in args.filename:
    with open(file_name, 'r') as files:
        <do your code here>
        # a = files.read()
        # print(a)
...