首页 > 解决方案 > 如果条件应该返回真,但返回假

问题描述

在这段代码中:

import tkinter as tk
root = tk.Tk()
root.geometry("250x400")
patternIntrare="0000000001"
patternIntrariGol="0000000000"
patternMatrice="1100000\n0000000\n0000000\n0000000\n0000000"

def function():
    with open("config.txt", "a+") as fisierText:
            if patternIntrare==patternIntrariGol:
                tk.messagebox.showerror("Eroare", "Nu ati ales nicio intrare pe vectorul de modele!")
            else:
                if patternMatrice in fisierText.read():
                    tk.messagebox.showwarning("Atentie", "Acest model exista deja in baza de date!")
                else:
                    tk.messagebox.showinfo("Nice", "E ok")

save=tk.Button(text="SAVE", command=function)
save.place(x=10, y=365)                

root.mainloop()                

为什么会这样:

if patternIntrare==patternIntrariGol:
                tk.messagebox.showerror("Eroare", "Nu ati ales nicio intrare pe vectorul de modele!")

这不会:

if patternMatrice in fisierText.read():
                    tk.messagebox.showwarning("Atentie", "Acest model exista deja in baza de date!")

文件信息是这样的:

1100000
0000000
0000000
0000000
0000000
0100000000

1100000
0000000
0000000
0000000
0000000
0100000000

1100000
0000000
0000000
0000000
0000000
0100000000

我认为问题在于文件读取,因为if涉及字符串的第一个条件很好用;另一个涉及某种文件解析的失败。我在 Stack Overflow 上进行了搜索,人们似乎以同样的方式阅读文件。

标签: pythonfile-io

解决方案


with open("config.txt", "a+") as fisierText::这会将文件指针移动到文件末尾。因此 afisierText.read()不会读取任何内容,因此我将文件打开方式修改为with open("config.txt", "r") as fisierText:.


推荐阅读