Python文件扫描

时间:2013-11-12 12:13:41

标签: python

我在游戏中有一些代码,它将用户数据存储在名为data.txt的文本文件中。以下代码是当一个人继续时,它将读取存储关卡的部分并查看它将在何处开始游戏:

elif choice==("2"):
    contusername = input("Enter the name you registered with")
    with open("data.txt") as f:
        f.readline()
        for lines in f:
            name, level = lines.split()
            if name == contusername:
                userdata = level
                break

        while True:
            if level == 1:
                level1()

            elif level == 2:
                level2()
            #and so on

但它不起作用。 Python无法读取文本文件。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

你可能忘了转换为int:

userdata = int(level)

其他方式,您的userdata'1\n'

形式的字符串

此外,您希望比较使用此userdata,而不是level

while True:
    if userdata == 1:
        level1()

P.S。我不知道这个while True:语句是否正确,因为只提供了一个代码摘录,但它对我来说也是可疑的。

答案 1 :(得分:0)

您似乎遇到了类型问题。从文件中读取将为您提供一个字符串,但您正在检查整数。

尝试将级别编号强制为int

elif choice==("2"):
    contusername = input("Enter the name you registered with")
    with open("data.txt") as f:
        f.readline()
        for lines in f:
            name, level = lines.split()
            if name == contusername:
                userdata = level
                break
        level = int(level)  # <-- force the level to an integer
        while True:
            if level == 1:
                level1()

            elif level == 2:
                level2()   

答案 2 :(得分:0)

这应该有效:

elif choice == "2":
    contusername = raw_input("Enter the name you registered with")
    with open("data.txt") as f:
        for lines in f.readlines():
            name, level = lines.split()
            if name == contusername:
                userdata = int(level)
                break

        while True:
            if userdata == 1:
                level1()
            elif userdata == 2:
                level2()