あるフォルダにいくつかのzipファイルがあります。私はそれらを処理するためのスクリプトを持っています。データベースに書き込まれるデータは、異なるファイル内にあり、次のように、その構造は次のとおりです。Python - 複数のzipファイルのファイル管理と処理
some_text;database;file_name
some_text2;database2;file_name2
....
このファイルを処理するための最良の方法は何ですか?また、そのファイルに一致するzipファイル名がない場合は、エラーメッセージを報告する必要があります。
私の現在のコード:
filelist = glob.glob(os.path.join(rootdir, '*.zip'))
if filelist:
for file in filelist:
print "Working on file ", file
#get only file name without .zip for compare
aa = file.split(sl)
bb = aa[len(aa) -1]
cc = bb.split(".")
ime_sole = cc[0]
fle = codecs.open(rootdir + sl + 'portal_schools.txt',
'r',encoding="cp1250")
line = fle.readline()
# Read lines
for line in iter(fle):
#print line,
a,b,c = line.split(";")
if c == ime_sole:
print c
database = str(b)
#distdir = str(c)
else:
print "some text"
return
fle.close()
しかし、それは行ずつ読み込まれているので、これは失敗します。最初の行に一致するものがなければ、コードは停止します。私はそれをファイルを通って続ける必要があります。そして、すべてが完了したら、新しいzipファイルから始めます。
に動作します。 – codeape
else条件からの戻り値を削除します。そのためにコードは停止します。 – spicavigo
申し訳ありませんが、あなたのコードには多くの問題があります: "if filelist:"は必要ありません。リストを反復しているだけなので、リストが空の場合は問題ありません。また、ファイル名を取得するには、os.path.splitext()を使用する必要があります。ファイル処理ループなどからデータファイルを読み取る必要があります。 –