私は次のPython 2.7コードを持っています。目的は、csvファイルを読み込み、CSVファイルの各行のスクリプトを実行することです。Python - 割り当てエラーの前に参照されるローカル変数 - CSVファイルの読み込み
CSVファイルは次のようになります(無ヘッダ、列Aのすべてのファイル名 - 行ごとに1つのファイル名、コンマ区切りではない)
ftp_abc_REFRESH_a
ftp_dep_a
スクリプトは最初のファイルのために動作しますが、2番目に失敗しました次のエラーを含むファイル:
timestamp = oupload.stat(file).st_atime
UnboundLocalError: local variable 'file' referenced before assignment
何か助けていただければ幸いです。感謝:)
スクリプト:
def myscript(ofile):
import time
import pysftp
import sys
import os
from datetime import datetime
import calendar
import zipfile
import re
oupload = pysftp.Connection(host="hostbcd", username="admin", password="abcs")
d = datetime.utcnow()
unixtime=calendar.timegm(d.utctimetuple())
month = datetime.now().strftime("%m")
string = ofile+month+".*\.txt$"
possibleFiles = oupload.listdir("/")
for filename in possibleFiles:
filedate = re.search(string, filename)
if filedate:
file = filename
timestamp = oupload.stat(file).st_atime
#if timestamp > unixtime - 54050 - 30 days
if timestamp != unixtime:
newtime=unixtime + 1800
abmfile='filename_'
zipname = abmfile+str(newtime)+'.sync.zip'
create_zip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)
oupload.get(file,file)
oupload.close()
newfilename = abmfile+str(newtime)+'.sync'
os.rename(file, newfilename)
create_zip.write(newfilename)
create_zip.close()
else:
print "No files found"
import csv
with open("data.csv", 'r') as csv_file:
reader = csv.reader(csv_file)
for row in reader:
ofile = row[0]
result = myscript(ofile)
'file = filename'という行が実行されていることを確認しましたか?私はファイルの初期値を示唆し、 'for filename in possibleFiles:'ループの前にそれを割り当てて、ループの後で変更されているかどうかを確認します。 – JLev
変数 'file'を持たないのは' ofile'ですか? – WhatsThePoint