0
0

More than 3 years have passed since last update.

【Python】コマンドライン引数をファイル名かstdinから読み込む

Last updated at Posted at 2020-06-20
引数をファイル名かstdinから読み込む
#!/usr/bin/env python3
"""
引数がファイルだったらファイルの内容を、
そうでなければ引数をprintする
"""
import sys
import fileinput
from pathlib import Path

if Path(sys.argv[1]).exists():  # 第一引数がファイルだったら
    for line in fileinput.input():  # ファイルの内容を一行ずつprint
        print('file input')
        print(line)
else:  # 第一引数がファイルではなかったら
    for i in sys.argv[1:]:  # 引数の文字列をprint
        print('args input')
        print(i)
実行結果
$ python stdin_test.py hoge.txt fuga.txt
file input
MYNAME!

file input
HERO!!


$ python stdin_test.py 1 2 3
args input
1
args input
2
args input
3

sys.argvがリストで返るので、fileinput.input()の結果もリスト形式で返るようにして使いました。

引数をファイル名かstdinから読み込んでリストで返す
if Path(sys.argv[1]).exists():  # 第一引数がファイルだったら
    ARGV = [
        line.replace('\n', '') for line in fileinput.input()  # 改行削除
        if line != '\n'  # 空行削除
    ]
else:  # 第一引数がファイルではなかったら
    ARGV = sys.argv[1:]

Python公式doc

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0