Я хочу открыть файл для чтения с помощью argparse. В cmd он должен выглядеть так: my_program.py/filepath
Что моя попытка:
parser = argparse.ArgumentParser()
parser.add_argument('file', type = file)
args = parser.parse_args()
Я хочу открыть файл для чтения с помощью argparse. В cmd он должен выглядеть так: my_program.py/filepath
Что моя попытка:
parser = argparse.ArgumentParser()
parser.add_argument('file', type = file)
args = parser.parse_args()
Тип аргумента должен быть строкой (по умолчанию она по умолчанию). Сделайте так:
parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()
with open(args.filename) as file:
# do stuff here
Взгляните на документацию: http://docs.python.org/2/library/argparse.html#type
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('file', type=argparse.FileType('r'))
args = parser.parse_args()
print args.file.readlines()
Чтобы файл был закрыт грациозно, вы можете комбинировать argparse.FileType с выражением "with"
# ....
parser.add_argument('file', type=argparse.FileType('r'))
args = parser.parse_args()
with args.file as file:
print file.read()
--- обновление ---
О, @Wernight уже сказал, что в комментариях
Я просто добавлю возможность использовать pathlib
:
import argparse, pathlib
parser = argparse.ArgumentParser()
parser.add_argument('file', type=pathlib.Path)
args = parser.parse_args()
with args.file.open('r') as file:
print(file.read())
Эта реализация позволяет параметру "имя файла" быть необязательным, а также давать краткое описание, если и когда пользователь вводит аргумент -h
или --help
.
parser = argparse.ArgumentParser(description='Foo is a program that does things')
parser.add_argument('filename', nargs='?')
args = parser.parse_args()
if args.filename is not None:
print('The file name is {}'.format(args.filename))
else:
print('Oh well ; No args, no problems')