ファイル内容とコマンドライン引数の比較
作業ディレクトリ内のファイル内容と、コマンドライン引数との比較をするプログラムのメモ。
ディレクトリ内
適当なディレクトリを作り、次の2つのファイルを保存しておく。
. ├── check_equal.py └── text1.txt 0 directories, 2 files
- テキストファイル(text1.txt)
- テキストファイル(text1.txt)の内容ど、コマンドライン引数が同じかどうかを調べるプログラム(check _equal.py)
ファイル内容
1. テキストファイル
大阪府庁 大阪市役所 通天閣 大阪城
メモ帳で適当に作ったもの。スペースや改行も適当に入れる。
2. 比較するためのpyファイル
import os import sys # コマンドライン引数 args = sys.argv[1:] # text1.txtの読み込み with open("text1.txt", "r") as f: s = f.read() s = s.replace("\n", " ") # 改行の削除 s = s.split(" ") # スペースで区切ってリスト化 s = [i for i in s if i != '' "] # リストから空白を削除 print("コマンドライン引数\n", args) print("-"*25) print("ファイル内容\n", s) # コマンドライン引数とファイル文字列の比較 if args == s: print("equal") else: print("not equal")
実行
実行はターミナルで行う。
$ python check_equal.py 大阪府庁 大阪市役所 通天閣 大阪城
実行されると、↑で与えたコマンドライン引数と、読み込んだファイル(text1.txt)の内容が等しいかどうかを判別し、表示する。
コマンドライン引数はlist型で返る。インデックスの1番以降が実際に入力して与えた引数。
一方、ファイル内容の読み込みはstr型で、改行コード(\n)が自動的に入る。それをreplaceで空に置換しリスト化しただけでは空白要素が入ってしまった。そのため、「テキスト文字列.remove(" ")」とすれば良さそうだと思ったが、これは「None」が返って上手く行かなかった。
詳しくはコチラを参考
簡単そうで、意外と奥が深い…
以上です。