2017-12-08 9 views
-1

私は現在、物事が私のテキストファイルに書き留められているかどうかを確認することにいくつか問題があります。(Tkinter/Python)テキストファイル内のものをチェックし、結果に基づいて異なる結果を得るにはどうすればいいですか?

私のコードでは、私は "1"が私のstorefile.txtファイルにあるかどうかをチェックします。 "1"がテキストファイルにない場合、ユーザが最初にコードを開いたことを通知すると、Tkinterはユーザの名前を尋ね、 "1"(ユーザがそのコードを前に開いたことを知らせる)を入れます。もしそうでなければ、Tkinterは "ようこそ"とユーザの入力した名前を言う。

しかし、最初のコードを開いた後でも、コードは "1"のように動作しますが、storefileにもありません。コードは私の名前を尋ねて「1」をもう一度印刷するので、私はstorefileに1以上の "1"があり、 "Welcome back" [name]ステージには到達しません。

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() 
+0

既に開いているファイルに何かを書き込もうとしています。 – Lafexlos

答えて

0

まず、すでに開いているファイルを開こうとしています。あなたは一度、あなたは、単に追加し、それに追加する行のリストを作成することができ、ファイルに新しいテキストを追加したい場合は

with open('file.txt','r') as f: 
    lines = f.readlines() #lines is now a list of lines in the file. 

:あなたが行毎にファイルにアクセスする場合 第二に、これを試してみてくださいチェックループが終了し、行リストに追加してファイルに書き戻します。

関連する問題