Skip to content

Instantly share code, notes, and snippets.

@u1and0
Last active June 19, 2020 09:47
Show Gist options
  • Save u1and0/6322bed1e6da66dca0a5e7a527d8666f to your computer and use it in GitHub Desktop.
Save u1and0/6322bed1e6da66dca0a5e7a527d8666f to your computer and use it in GitHub Desktop.
引数がファイルのとき、標準入力のときの分岐
`sys.argv`がリストで返るので、`fileinput.input()`の結果もリスト形式で返るようにして使いました。
if Path(sys.argv[1]).exists(): # 第一引数がファイルだったら
# ファイルの内容を一行ずつOrder Search
ARGV = [ # 改行削除
line.replace('\n', '') for line in fileinput.input()
if line != '\n'
]
else: # 第一引数がファイルではなかったら
ARGV = sys.argv[1:]
#!/usr/bin/env python3
"""
引数がファイルだったらファイルの内容を、
そうでなければ引数をprintする
>>> !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
"""
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment