私は次のスクリプトでASCIIとASCII以外の行を正しく識別していますが、行ごとではなく各ファイルのレポートが必要です。ループ内にの印刷があり、多くのファイルがあるので、出力が大きすぎます。 ファイルごとに1つの出力を得るためにこのコードを変更するにはどうすればよいですか?ファイルにASCII以外のテキストがあるかどうかを教えてください。例えばPython内部forループreadlines単一出力
import os
for file in os.listdir('.'):
if file.endswith('.txt'):
with open(file) as f:
content = f.readlines()
for entry in content:
try:
entry.encode('ascii')
except UnicodeEncodeError:
print("it was not a ascii-encoded unicode string")
print(file)
else:
print("It may have been an ascii-encoded unicode string")
print(file)
あなたが考える場合は、持っているprint文を削除し、 'オープンで(ファイル)の外にprint文を入れて...'コンテキストマネージャが、 'ファイルの中に...'ブロック –
内部あなたのスクリプトの構造、私はあなたが解決策を決定することができると思います。スクリプトがコンテンツ内の各エントリを評価している間に、印刷したい情報を格納し、inner forループが完了したときにその情報を出力することを考えてください。 –
これは、どの出力を必要としているか、どのような条件で出力されているかによって異なります。あなたのプログラムはすべてのファイルのすべての行を評価するために明記されているので、あなたが何をしたいのかを明確に伝える必要があります。 – Prune