如何访问存储在变量名下的文本文件

alee23

当尝试从 Python 访问外部文本文件时,我在尝试简单地查看文件内容和尝试添加到文件时遇到了几个问题。所涉及的程序部分采用用户名,如果该用户名不存在,则在该用户名下创建一个文本文件。使用该Create()功能时,我遇到以下情况TypeError

Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\Python 3.3.2\A Level Computer Science\stackoverflowsolution.py", line 48, in View
    with open(userfile, 'r') as u:
FileNotFoundError: [Errno 2] No such file or directory: 'name.txt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Python 3.3.2\Python files\lib\tkinter\__init__.py", line 1475, in __call__
    return self.func(*args)
  File "D:\Python 3.3.2\A Level Computer Science\stackoverflowsolution.py", line 91, in Add
    u.write(addText.get())
TypeError: get() missing 1 required positional argument: 'index1'

这是遇到错误的代码:

from tkinter import *
import os

def Login():

    global nameEL
    global rootA

    rootA = Tk()
    rootA.title('Login')

    intruction = Label(rootA, text='Please Login\n')
    intruction.grid(sticky=E)

    nameL = Label(rootA, text='Username: ')
    nameL.grid(row=1, sticky=W)

    nameEL = Entry(rootA)
    nameEL.grid(row=1, column=1)

    loginB = Button(rootA, text='Login', command=LoggedIn)
    loginB.grid(columnspan=2, sticky=W)
    rootA.mainloop()

def LoggedIn():

    global userfile

    roots1 = Tk()
    roots1.title('Logged in successfully')
    roots1.geometry('300x300')

    userfile = nameEL.get() + '.txt'

    View1 = Button(roots1, text='View', command=View)
    View1.grid(columnspan=10, sticky=W)
    View1.pack(fill = 'x')

    Create1 = Button(roots1, text='Create', command=Create)
    Create1.grid(columnspan=10, sticky=W)
    Create1.pack(fill = 'x')

def View():

    global userfile

    try:
        with open(userfile, 'r') as u:
            print(u.read())
    except FileNotFoundError:
        r = Tk()
        r.title('View')
        r.geometry('300x50')
        rlbl = Label(r, text='\n[!] Theres nothing to see here [!]')
        rlbl.pack()
        r.mainloop()
        LoggedIn()
    except ValueError:
        r = Tk()
        r.title('View')
        r.geometry('300x50')
        rlbl.pack()
        r.mainloop()
        LoggedIn()

def Create():

    global addText
    global rootC

    rootC = Tk()
    rootC.title('Lets add some information')
    instruction = Label(rootC, text='Please enter the information you would like to add\n')
    instruction.grid(row=0, column=0, sticky=W)

    newText = Label(rootC, text='info: ')
    newText.grid(row=1, column=0)

    addText = Text(rootC)
    addText.grid(row=2, column=0)

    addButton = Button(rootC, text='Add', command=Add)
    addButton.grid(columnspan=2, sticky=W)
    addButton.grid(row=3, column=0)

def Add():

    global userfile

    with open(userfile, 'a') as u:
        u.write(addText.get())
        u.write('\n')

        rootC.destroy()
        LoggedIn()

Login()
Guil23

我会这样做:

def LoggedIn():

    global userfile

    roots1 = Tk()
    roots1.title('Logged in successfully')
    roots1.geometry('300x300')

    userfile = nameEL.get() + '.txt'
    #and the tkinter widgets

这段代码userfile = open(nameEL.get() + '.txt', 'a')有点奇怪,您正在使用该open命令创建一个对象,稍后将其用作字符串。你只需userfile要是一个字符串,而不是一个命令。然后,您可以使用它打开文件(见下文)

def View():

    global userfile

    try:
        with open (userfile, 'r') as u:
            print (u.read())
    except FileNotFoundError: #file doesn't exist
        r = Tk()
        r.title('View')
        r.geometry('300x50')
        rlbl = Label(r, text='\n[!] This file doesn't exist [!]')
        rlbl.pack()
        r.mainloop()
        LoggedIn()
    except ValueError: #some error when reading
        r = Tk()
        r.title('View')
        r.geometry('300x50')
        rlbl = Label(r, text='\n[!] Problem when reading the file [!]')
        rlbl.pack()
        r.mainloop()
        LoggedIn()

在这里,print(userfile.read())不起作用,因为您userfile使用append模式创建(也许还有其他问题)

最后

def Add():
    global userfile

    with open(userfile, 'a') as u:
        u.write(addText.get()) #don't forger the .get ()
        u.write('\n')

    rootC.destroy()
    LoggedIn()

在这里,您试图Entry在文件中写入一个对象,Python 不喜欢那样。您只需要添加.get()以便它写入Entry对象中的内容addText这里还有一个错误:使用with ()命令时,您不需要关闭文件,它会自动完成。可能仍然存在问题,但文件应该可以正常工作。

编辑:当使用Text小部件时,get() 命令需要比仅使用Entry小部件时更多的参数您可以使用:

u.write (addText.get('1.0', END))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何停止访问文本文件?

来自分类Dev

在文本文件Python中存储和调用变量

来自分类Dev

如何在python 3.3.3中读取文本文件并将其存储在变量中?

来自分类Dev

如何从文本文件中读取数据并将其存储在C语言变量中?

来自分类Dev

如何在python 3.3.3中读取文本文件并将其存储在变量中?

来自分类Dev

如何从文本文件中读取值并将该值存储到临时变量中?

来自分类Dev

Bash函数将变量的值写入带有变量名的文本文件中

来自分类Dev

如何使用bash存储编辑的文本文件?

来自分类Dev

如何从文本文件读取存储的哈希表?

来自分类Dev

如何从终端中的任何位置访问文本文件

来自分类Dev

如何从文本文件访问矩阵的所需部分?

来自分类Dev

如何访问我创建的文本文件?

来自分类Dev

如何导入布局存储在SAS文件(.sas)中的定宽文本文件(具有多个变量)?

来自分类Dev

如何将文本文件读入变量?

来自分类Dev

如何使用 node.js 读取名词文本文件并将其存储在变量中

来自分类Dev

从文本文件重新访问

来自分类Dev

从文本文件读取变量

来自分类Dev

从文本文件创建变量

来自分类Dev

MATLAB:从文本文件获取变量

来自分类Dev

在文本文件中插入变量

来自分类Dev

检查变量是否是文本文件

来自分类Dev

导入文本文件选项卡定界符,变量名称超过32个字符

来自分类Dev

我应该将数据作为变量存储在javascript还是文本文件中?

来自分类Dev

在SSIS中打开文本文件,并将第一行存储在变量中

来自分类Dev

存储在文本文件中的Python变量不起作用,但应该

来自分类Dev

读取文本文件并将信息存储到变量中

来自分类Dev

shell脚本,可从存储在文本文件中的变量列表中进行“更新” sql命令

来自分类Dev

将字符串变量存储在文本文件中

来自分类Dev

读取文本文件并将数据存储在类的私有成员变量中-C ++

Related 相关文章

  1. 1

    如何停止访问文本文件?

  2. 2

    在文本文件Python中存储和调用变量

  3. 3

    如何在python 3.3.3中读取文本文件并将其存储在变量中?

  4. 4

    如何从文本文件中读取数据并将其存储在C语言变量中?

  5. 5

    如何在python 3.3.3中读取文本文件并将其存储在变量中?

  6. 6

    如何从文本文件中读取值并将该值存储到临时变量中?

  7. 7

    Bash函数将变量的值写入带有变量名的文本文件中

  8. 8

    如何使用bash存储编辑的文本文件?

  9. 9

    如何从文本文件读取存储的哈希表?

  10. 10

    如何从终端中的任何位置访问文本文件

  11. 11

    如何从文本文件访问矩阵的所需部分?

  12. 12

    如何访问我创建的文本文件?

  13. 13

    如何导入布局存储在SAS文件(.sas)中的定宽文本文件(具有多个变量)?

  14. 14

    如何将文本文件读入变量?

  15. 15

    如何使用 node.js 读取名词文本文件并将其存储在变量中

  16. 16

    从文本文件重新访问

  17. 17

    从文本文件读取变量

  18. 18

    从文本文件创建变量

  19. 19

    MATLAB:从文本文件获取变量

  20. 20

    在文本文件中插入变量

  21. 21

    检查变量是否是文本文件

  22. 22

    导入文本文件选项卡定界符,变量名称超过32个字符

  23. 23

    我应该将数据作为变量存储在javascript还是文本文件中?

  24. 24

    在SSIS中打开文本文件,并将第一行存储在变量中

  25. 25

    存储在文本文件中的Python变量不起作用,但应该

  26. 26

    读取文本文件并将信息存储到变量中

  27. 27

    shell脚本,可从存储在文本文件中的变量列表中进行“更新” sql命令

  28. 28

    将字符串变量存储在文本文件中

  29. 29

    读取文本文件并将数据存储在类的私有成员变量中-C ++

热门标签

归档