👩💻
言語処理100本ノック 2020 (Rev 2) 第2章: UNIXコマンド 15. 末尾のN行を出力
問題
15. 末尾のN行を出力
自然数Nをコマンドライン引数などの手段で受け取り,入力のうち末尾のN行だけを表示せよ.確認にはtailコマンドを用いよ.
solution15.py
import sys
import pandas as pd
import fire
if len(sys.argv) == 1:
print('Set arg n, like "python chapter02/solution15.py 5"')
else:
n = int(sys.argv[1])
df = pd.read_csv('chapter02/popular-names.txt', sep='\t', header=None)
print(df.tail(n))
output
0 1 2 3
2775 Benjamin M 13381 2018
2776 Elijah M 12886 2018
2777 Lucas M 12585 2018
2778 Mason M 12435 2018
2779 Logan M 12352 2018
solution15.sh
tail -n $1 popular-names.txt
output
Benjamin M 13381 2018
Elijah M 12886 2018
Lucas M 12585 2018
Mason M 12435 2018
Logan M 12352 2018
この問題では、「14. 先頭からN行を出力」とほぼ同じです。sys
モジュールのargv
を使用します。そうすると、コマンドライン引数のリストが取得できる。例えば、「python solution15.py 5」を実行した場合は、「sys.argv」は「[solution15.py, 5]」となります。そのため、sys.argv[1]がコマンドライン引数(5)となります。
参考記事
第2章: UNIXコマンド
Pythonでコマンドライン引数を受け取る
pandas.DataFrame, Seriesの先頭・末尾の行を返すheadとtail
Discussion