4

我正在尝试创建一个文件 .txt 并保存用户提供的信息并在 python 中打开该文件我在创建文件时遇到了麻烦

这是我的代码

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

* * 这是我放文件名的地方 非常感谢你提前

4

3 回答 3

4

您可以使用open 内置获取具有写入权限的文件对象,然后使用write 函数填充内容:

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

查看链接文档以获取有关开放参数和其他有用函数(如writelines )的更多信息。

于 2013-06-30T03:28:07.817 回答
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,您可以在屏幕上看到输出(尽管您可以手动查看保存在 .txt 文件中的数据)

这是一个示例:

姓名:K-DawG 电话号码:911

这里的关键是使用with as语句,有关更多信息,请查看 Codeacademy 的Python课程

使用列表和 insert()方法肯定不是解决此问题的最佳选择,但如果您使用我的方法并写入带有分隔符的 .csv 文件,该程序最终可能是值得的

于 2013-06-30T05:32:11.437 回答
1

我找到了一种非常简单的方法来使用 python 的内置 IO 函数来抽象文件的概念。我在这里写了博客

如果要写入文件,只需执行

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()
于 2013-06-30T05:58:37.843 回答