こんな感じでしょうか?
python
1import os
2import glob
3
4for json_conf in glob.glob(r'tool/*.json'):
5 file_name = os.path.basename(json_conf)
6 droped_extension = os.path.splitext(file_name)[0]
7
8 with open("test01.txt") as lists:
9 lines = map(lambda x: x.strip(), lists.readlines())
10 if droped_extension in lines:
11 print(f"{droped_extension}({file_name})はファイル名が記載されいてます")
12 else:
13 print(f"{droped_extension}({file_name})はファイル名が記載されていません")
可能な限り元のコードの構成に近い状態で書いてみました。
ただ上記だと、各JSONファイル名がtest01.txtに記載されているか、という確認のために、各JSONファイルごとにtest01.txtをオープン、全行読み込み、余計な改行の削除、という処理を毎回行ってしまっています。
1回だけやっておけば十分な処理なので、自分なら以下のように書きます。
python
1import os
2import glob
3
4with open("test01.txt") as lists:
5 lines = list(map(lambda x: x.strip(), lists.readlines()))
6
7for json_conf in glob.glob(r'tool/*.json'):
8 file_name = os.path.basename(json_conf)
9 dropped_extension = os.path.splitext(file_name)[0]
10
11 if dropped_extension in lines:
12 print(f"{dropped_extension}({file_name})はファイル名が記載されいてます")
13 else:
14 print(f"{dropped_extension}({file_name})はファイル名が記載されていません")
なお、もしPythonにまだ慣れていなくてmap(lambda...)
のところがよく分からん、ということであれば、以下のようにコードを書き直すことも可能ですのでご参考までに。
python
1with open("test01.txt") as lists:
2 # test01.txtの全行を読み込み。
3 lines_work = lists.readlines()
4 lines = list()
5
6 # ただし、各行の末尾には改行コードが含まれているので、それを削除する。
7 # for文で各行毎に処理を回す
8 for line in lines_work:
9 # 各行(文字列)がline変数に渡されるので、strip関数を使って改行コードを削除
10 striped = line.strip()
11 # 結果格納用のlinesに結果を追加
12 lines.append(striped)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 13:20
2020/09/30 13:30
2020/10/01 08:40 編集