这是我的问题:
savedFileSize = 0
savedFileCount = 0
SUBFOLDER = False
def saveFile(path, filename):
global savedFileSize
global savedFileCount
filepath = os.path.join(path, filename)
if SUBFOLDER:
try:
subpath = os.path.join(SAVEPATH, path.split("\\", 1)[1])
if not os.path.exists(subpath):
os.makedirs(subpath)
shutil.copy(filepath, subpath)
savedFileCount += 1
savedFileSize += os.path.getsize(filepath)/(1024*1024)
except BaseException as e:
logging.exception(e)
else:
try:
shutil.copy(filepath, SAVEPATH)
savedFileCount += 1
savedFileSize += os.path.getsize(filepath)/(1024*1024)
except BaseException as e:
logging.exception(e)
我一直收到“赋值前引用的局部变量‘savedFileCount’”错误。 但是变量 SUBFOLDER 可以正常工作。 savedFileSize 变量也可以正常工作。
请您参考如下方法:
我很高兴删除您的 pyc 文件解决了您的问题。但是,您的代码实际上并不调用全局变量。在大多数情况下,(不可避免的)使用全局变量是设计不太好的标志,可能会导致各种问题,包括名称冲突等。
您可以在没有全局变量的情况下轻松重构您的代码:
def saveFile(path, filename):
savedFileCount, savedFileSize = 0, 0
filepath = os.path.join(path, filename)
if SUBFOLDER:
try:
subpath = os.path.join(SAVEPATH, path.split("\\", 1)[1])
if not os.path.exists(subpath):
os.makedirs(subpath)
shutil.copy(filepath, subpath)
savedFileCount = 1
savedFileSize = os.path.getsize(filepath)/(1024*1024)
except BaseException as e:
logging.exception(e)
else:
try:
shutil.copy(filepath, SAVEPATH)
savedFileCount = 1
savedFileSize += os.path.getsize(filepath)/(1024*1024)
except BaseException as e:
logging.exception(e)
return savedFileCount, savedFileSize
然后在你的调用范围内:
totalCount, totalSize = 0
for path, filename in tobesaved:
count, size = saveFile(path, filename)
totalCount += count
totalSize += size
