我正在尝试一次读取多个文件。当我尝试在条件中打印值时,我的代码工作正常。但是当我尝试打印出if条件的值时,它显示了无效的变量名。
我想访问Contentdata
和description
数据。但不知道如何访问它们,我必须将它们存储在我的Firebase数据库中
for i,j,y in os.walk(bookpath):
name = i
book = {
'name': name,
}
foldername = name.replace('MHE/2013/', '')
content = name+"/content.txt"
description = name+"/description.txt"
imagepath = name+"/"+foldername+".jpg"
for file in y:
if path.exists(content):
if file == "content.txt":
rawdata = open(content, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
with open(content, encoding=charenc) as cont:
contentdata = cont.read()
if path.exists(description):
if file == "description.txt":
rawdata = open(description, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
with open(description, encoding=charenc) as desc:
descriptiondata = desc.read()
if path.exists(imagepath):
if file == foldername+".jpg":
imageBlob = bucket.blob("images/"+os.path.basename(imagepath))
imageBlob.upload_from_filename(filename=imagepath)
imagename = "images/"+foldername+".jpg" //this works fines
else:
imagename = "null"
答案 0 :(得分:2)
if path.exists(content):
if file == "content.txt":
rawdata = open(content, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
with open(content, encoding=charenc) as cont:
contentdata = cont.read()
如果content
路径不存在,或者file
不等于“ content.txt”,
从未创建contentdata
。
在这种情况下,您希望contentdata
是什么?它应该为null,空白字符串还是一些默认消息,例如“找不到内容”?
如果您希望contentdata
始终有一个值,则应在代码顶部,在初始化foldername
和content
的同一位置对其进行初始化。
答案 1 :(得分:0)
contentdata
和descriptiondata
在if
块内分配,可能无法执行。如果它们不执行,则不会分配这些变量,并且在尝试引用它们时会得到NameError
。
如果这些if
块没有执行,您需要弄清楚要发生什么,并做出适当的响应。