我的python代码中的导入和递归错误?

时间:2016-07-09 15:06:40

标签: python recursion import

我目前正在开展一个项目,但我似乎遇到了一个逻辑错误。 我的项目是纯python,由两个文件组成:ui.py和read.py。

ui处理一个简单的cmd ui和一个缓存文件来保存用户设置。

读取通过从ui导入从缓存文件中获取数据,以便解析一些文件(文件解析与问题无关) 这是ui的代码:

def read_cache():
    with open("cache.txt", "r+") as f:
        byt = f.read()
        byt = byt.split()
    return byt


def write_cache(a, b):
    with open("cache.txt", "w") as f:
        f.write(a + "\n" + b)


def ui():
    g = raw_input("Use cache file? (y/n): ")

    if g == "y":
        i = read_cache()
        return i

    elif g == "n":
        zipname = raw_input("Zip file name: ")
        direc = raw_input("Zip file folder directory: ")
        write_cache(zipname, direc)
        i = [zipname, direc]
        return i
    else:
        print("ERROR: Please input a valid y/n \n")
        ui()

以下是读取代码(仅发生错误的相关部分):

import ui

x = ui.ui()
zipname = x[0]
direc = x[1]

错误是:Traceback (most recent call last): File "read.py", line 11, in <module> zipname = x[0] TypeError: 'NoneType' object has no attribute '__getitem__'

当我在y \ n问题中输入无效输入并且输入有效输入时,似乎会发生这种情况。 AKA在ui.ui()

中的else子句中出错了

有什么想法吗?我尝试从ui导入ui(),我尝试在ui中运行ui并在那里分配var。

提前感谢您的帮助。

编辑:更改代码以返回ui()似乎可以解决问题,但我不明白如何解决问题。有人可以解释一下吗?

第二次编辑:我仍然不知道为什么返回ui()有效但我的整个代码可以通过将所有内容更改为带有if循环嵌套的while循环来更好地构建。比不需要递归。谢谢@dercz和@zondo

0 个答案:

没有答案