web-dev-qa-db-ja.com

argparseを使用してファイルを開く方法は?

Argparseを使用して読み取り用にファイルを開きたい。 cmdでは、my_program.py/filepathのようになります。

それが私の試みです:

parser = argparse.ArgumentParser()
parser.add_argument('file', type = file)
args = parser.parse_args()
47
nuT707

引数のタイプは文字列である必要があります(とにかくデフォルトです)。次のようにします:

parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()
with open(args.filename) as file:
  # do stuff here
59
wim

ドキュメントをご覧ください: 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()
167
ilent2

ファイルを正常に閉じるには、argparse.FileTypeを「with」ステートメントと組み合わせることができます

# ....

parser.add_argument('file', type=argparse.FileType('r'))
args = parser.parse_args()

with args.file as file:
    print file.read()

---更新---

ああ、@ Wernightはすでにコメントでそれを言った

22
Ming

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())
0
Thomas Ahle