我无法从条件条件的foreach循环访问变量

时间:2019-06-18 15:19:38

标签: python

我正在尝试一次读取多个文件。当我尝试在条件中打印值时,我的代码工作正常。但是当我尝试打印出if条件的值时,它显示了无效的变量名。

我想访问Contentdatadescription数据。但不知道如何访问它们,我必须将它们存储在我的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"

2 个答案:

答案 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始终有一个值,则应在代码顶部,在初始化foldernamecontent的同一位置对其进行初始化。

答案 1 :(得分:0)

contentdatadescriptiondataif块内分配,可能无法执行。如果它们不执行,则不会分配这些变量,并且在尝试引用它们时会得到NameError

如果这些if块没有执行,您需要弄清楚要发生什么,并做出适当的响应。