👩‍💻

言語処理100本ノック 2020 (Rev 2) 第2章: UNIXコマンド 15. 末尾のN行を出力

2023/01/07に公開約1,300字

問題

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)となります。

https://github.com/kurokawa5/nlp100_2020/blob/main/chapter02/solution15.py

参考記事

第2章: UNIXコマンド
Pythonでコマンドライン引数を受け取る
pandas.DataFrame, Seriesの先頭・末尾の行を返すheadとtail

Discussion

ログインするとコメントできます