2013-06-30 34 views
4

我試圖創建一個文件.txt並保存用戶提供的信息,並且還在python中打開文件 我在創建時遇到了問題文件Python:如何創建一個文件.txt並在其中記錄信息

這裏是我的代碼

from Tkinter import * 

raiz = Tk() 
frame = Frame(raiz) 

def cadastro(): 
    form = Toplevel(raiz) 

    Label(form, text='Nome: ').grid(column=0, row=0, sticky=E) 
    Label(form, text='Celular: ').grid(column=0, row=1, sticky=E) 

    nome = StringVar() 
    celular = StringVar() 

    a=Entry(form, textvariable=nome, width=15) 
    a.grid(column=1, row=0, sticky=W) 
    Entry(form, textvariable=celular, width=15).grid(column=1, row=1, sticky=W) 

    def onCancel(): 
     form.destroy() 

    def onOk(): 
     ******.insert('','end',text=nome.get(), values=celular.get()) 
     onCancel() 

    Button(form, text='OK', command=onOk).grid(column=0, row=2, sticky=E) 
    Button(form, text='Cancel', command=onCancel).grid(column=1, row=2, sticky=W) 

def listar(): 





w = Button(raiz, text='Cadastrar',command=cadastro).grid() 
x = Button(raiz, text='Listar').grid() 


raiz.mainloop() 

* *它就是我把文件名 非常感謝你提前

+0

這是最糟糕的變量命名計劃我見過,它是什麼與函數'listar():' –

+0

它是在我的語言對不起,如果你不明白 – Sam

回答

2

下面是代碼,我重新設計了它以滿足您的要求。反饋會非常讚賞

from Tkinter import * 

raiz = Tk() 
frame = Frame(raiz) 
out = [] 

def cadastro(): 
    form = Toplevel(raiz) 

    Label(form, text='Nome: ').grid(column=0, row=0, sticky=E) 
    Label(form, text='Celular: ').grid(column=0, row=1, sticky=E) 

    nome = StringVar() 
    celular = StringVar() 

    a=Entry(form, textvariable=nome, width=15) 
    a.grid(column=1, row=0, sticky=W) 
    Entry(form, textvariable=celular, width=15).grid(column=1, row=1, sticky=W) 

    def onCancel(): 
     form.destroy() 

    def onOk(): 
     with open('outt.txt','w') as txt: 
      txt.write('Name : ' + str(nome.get()) + ' ' + 'Telephone No. : ' + str(celular.get())) 
     onCancel() 

    Button(form, text='OK', command=onOk).grid(column=0, row=2, sticky=E) 
    Button(form, text='Cancel', command=onCancel).grid(column=1, row=2, sticky=W) 

def listar(): 
    with open('outt.txt','r') as txt_read: 
     print txt_read.read() 




w = Button(raiz, text='Cadastrar',command=cadastro).grid() 
x = Button(raiz, text='Listar' , command=listar).grid() 


raiz.mainloop() 

輸入數據後,如果您在點擊listar你可以看到屏幕上輸出(雖然你可以手動查看其保存在文本文件中的數據)

這裏有一個例子:

名稱:K-耶電話號碼:

這裏的關鍵是使用with as聲明,更多信息請查看Codeacademy上使用列表和插入蟒蛇

course()方法肯定不是這個問題的最佳選擇,而是如果你使用我的方法並寫入帶有分隔符的.csv文件,那麼程序最終可能是值得的

+0

是的,這正是我想要的!非常感謝你! – Sam

3

可以使用open built-in獲取寫作權限的文件對象,然後使用write function填寫內容:

file = open('<FILENAME>.txt', 'w') 
file.write('first line\n') 
file.write('second line\n') 
file.close() 

退房鏈接的文檔有關開放參數和其他有用的功能,如writelines更多信息。

+1

我想創建一個GUI與Tk,用戶可以在那裏寫他的名字和手機,當他點擊「確定」它保存在.txt文件樂,我試圖使用此代碼之前,但它不起作用 – Sam

1

我發現了一個非常簡單的方法來用python的內置IO函數抽象文件的概念。我的博客上講述它here

如果你想寫入文件,只是做

import sys 
sys.stdout = open ("Output.txt", "w") 
print "Name :", str(nome.get()), "Telephone No :", str(celular.get()) 

,如果你想從文件中讀取,只是做

import sys 
sys.stdin = open ("Input.txt", "r") 
print raw_input() 
相關問題