(Tkinter/Python)如何检查文本文件中的内容,并根据结果产生不同的结果?
我目前在检查我的文本文件中是否写下了内容时遇到了一些问题 在我的代码中,我检查storefile.txt文件中是否有“1”。如果文本文件中没有“1”,表示用户第一次打开了代码,Tkinter会询问用户的姓名并输入“1”(表示用户以前打开过代码)。如果没有,Tkinter会说“欢迎回来”,以及用户输入的姓名 然而,即使在我第一次打开代码之后,代码的行为就像“1”不在storefile中一样,尽管它在storefile中。代码要求输入我的名字并再次打印“1”,因此我的storefile中有超过1个“1”,并且永远不会到达“欢迎回来”[name]阶段(Tkinter/Python)如何检查文本文件中的内容,并根据结果产生不同的结果?,python,tkinter,Python,Tkinter,我目前在检查我的文本文件中是否写下了内容时遇到了一些问题 在我的代码中,我检查storefile.txt文件中是否有“1”。如果文本文件中没有“1”,表示用户第一次打开了代码,Tkinter会询问用户的姓名并输入“1”(表示用户以前打开过代码)。如果没有,Tkinter会说“欢迎回来”,以及用户输入的姓名 然而,即使在我第一次打开代码之后,代码的行为就像“1”不在storefile中一样,尽管它在storefile中。代码要求输入我的名字并再次打印“1”,因此我的storefile中有超过1个“
import tkinter as tk
from time import time
from tkinter import *
root = Tk()
#FUNCTION FOR LABELS (not necessary but it condenses the code)
def label(a):
Label(root,text=a,font=("System",15,"bold"),fg="steelblue").pack()
#THIS IS FOR EXTRACTING SPECIFIC DATA FROM THE TEXTFILE
lines = [] #Declare an empty list named "lines"
def specify(x):
with open ('storefile.txt', 'rt+') as in_file: #Open file lorem.txt for reading of text data.
for line in in_file: #For each line of text store in a string variable named "line", and
lines.append(line) #add that line to our list of lines.
label(lines[x]) #print the list object.
#[x] allows us to print whatever line we want.
#############################
#THIS IS FOR THE 'ENTER NAME' BUTTON TO STORE NAMES
def store():
user_entry = distance_text_box.get()
f=open("storefile.txt", "a")
f.write (str(user_entry))
f.close()
#TITLE
label("[INSERT TITLE]")
#CHECKS IF THIS IS THEIR FIRST TIME ON THE APP. IF IT IS, PRINT DESCRIPTION AND ASKS FOR USERNAME
searchfile = open("storefile.txt", "r")
with open ('storefile.txt', 'rt+') as in_file: #Open file lorem.txt for reading of text data.
for line in searchfile: #For each line of text store in a string variable named "line", and
if "1" not in line:#IT STORES '1' IN THE TEXTFILE WHEN THE USER FIRST OPENS THE CODE, SO IF '1' ISN'T THERE, THE USER HAS NOT OPENED THE CODE YET
print("yes")
Label(root,text="ENTER NAME",font=("System",15,"bold"),fg="steelblue").pack(side=LEFT)#enter name label
distance_text_box = Entry(root, bd=1)
distance_text_box.pack()
searchfile = open("storefile.txt", "a")
searchfile.write("1\n")
searchfile.close()
Button(root, text ="Done!", command=lambda:store()).pack(side=RIGHT)
elif "1" in line:
print("no")
Label(root,text="Welcome back,").pack()
searchfile.close()
#PUT NAME IN TEXTFILE
root.mainloop()
首先,您试图打开一个已经打开的文件。 其次,如果要逐行访问文件,请尝试以下操作:
with open('file.txt','r') as f:
lines = f.readlines() #lines is now a list of lines in the file.
如果要向文件中添加新文本,只需创建一个要添加和追加的行列表,检查循环完成后,将其追加到行列表并回写到文件。您正在尝试向已打开的文件中写入内容。