フォルダからファイルを開いて読み取ろうとしていますが、見つかりません。私はPython3を使用しています
これが私のコードです:
import os
import glob
prefix_path = "C:/Users/mpotd/Documents/GitHub/Python-Sample-
codes/Mayur_Python_code/Question/wx_data/"
target_path = open('MissingPrcpData.txt', 'w')
file_array = [os.path.abspath(f) for f in os.listdir(prefix_path) if
f.endswith('.txt')]
file_array.sort() # file is sorted list
for f_obj in range(len(file_array)):
file = os.path.abspath(file_array[f_obj])
join_file = os.path.join(prefix_path, file) #whole file path
for filename in file_array:
log = open(filename, 'r')#<---- Error is here
Error: FileNotFoundError: [Errno 2] No such file or directory: 'USC00110072.txt'
open()
にファイルへのフルパスを与えるのではなく、ファイルの名前だけを与えます。
os.path.join()
への正しいディレクトリパス、またはファイルが存在するディレクトリへのos.chdir()
のいずれかを行う必要があります。
あなたのコードから推測できますが、_file_array
_リストの変更を忘れていることになります。これを修正するには、最初のループを次のように変更します。
_file_array = [os.path.join(prefix_path, name) for name in file_array]
_
また、os.path.abspath()
は、ファイルの名前だけではファイルへの完全パスを推定できないことに注意してください。
繰り返します。
コードのこの行:
_file_array = [os.path.abspath(f) for f in os.listdir(prefix_path) if f.endswith('.txt')]
_
間違っている。正しい絶対パスのリストは表示されません。あなたがしなければならないのは:
_import os
import glob
prefix_path = ("C:/Users/mpotd/Documents/GitHub/Python-Sample-"
"codes/Mayur_Python_code/Question/wx_data/")
target_path = open('MissingPrcpData.txt', 'w')
file_array = [f for f in os.listdir(prefix_path) if f.endswith('.txt')]
file_array.sort() # file is sorted list
file_array = [os.path.join(prefix_path, name) for name in file_array]
for filename in file_array:
log = open(filename, 'r')
_
絶対パスを使用する必要がある場所で相対パスを使用しています。 _os.path
_を使用してファイルパスを操作することをお勧めします。コードの簡単な修正は次のとおりです。
_prefix = os.path.abspath(prefix_path)
file_list = [os.path.join(prefix, f) for f in os.listdir(prefix) if f.endswith('.txt')]
_
コードには他にもいくつかの問題があることに注意してください。
pythonあなたは_for thing in things
_を実行できます。あなたはfor thing in range(len(things))
を実行しました。
ファイルを開くときは、コンテキストマネージャを使用する必要があります。続きを読む こちら 。