ファイル内容とコマンドライン引数の比較
作業ディレクトリ内のファイル内容と、コマンドライン引数との比較をするプログラムのメモ。
ディレクトリ内
適当なディレクトリを作り、次の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」が返って上手く行かなかった。
詳しくはコチラを参考
簡単そうで、意外と奥が深い…
以上です。