Python 在 csv 中写入错误的内容

标签 python csv user-interface

代码:

import tkinter
import csv


def mainapp():
print ('R')

def SigUP():

U = input1.get()
P = input2.get()
R = input3.get()

def P():
    myData = [[U, P, R]]
    myFile = open('csvexample3.csv', 'w')  
    with myFile:  
            writer = csv.writer(myFile)
            writer.writerows(myData)


if U == '' or P == '' or R == '':
    print ('No')
else:
    P()

def LogIN():
U = input1.get()
P = input2.get()
R = input3.get()


main = tkinter.Tk()

realname = tkinter.Label(main, text='Real Name')
input3 = tkinter.Entry(main)
Username = tkinter.Label(main, text='Username')
input1 = tkinter.Entry(main)
Password = tkinter.Label(main, text='Password')
input2 = tkinter.Entry(main, show="*")
SigUp = tkinter.Button(main, text='Join Us Now', command=SigUP)
LogIn = tkinter.Button(main, text='Log In', command=LogIN)

input3.grid(column='2', row='1')
realname.grid(column='1', row='1')
input1.grid(column='2', row='2')
Username.grid(column='1', row='2')
input2.grid(column='2', row='3')
Password.grid(column='1', row='3')
SigUp.grid(columnspan='3', row='5')
LogIn.grid(columnspan='3', row='4')

main.mainloop()

在我的 csv 文件中,我得到以下内容:

Ben4594,<function SigUP.<locals>.P at 0x101d51950>,Ben

我希望我的 csv 应该如下所示:

Ben4594,Password,Ben

我正在使用 python 3 和 tkinter。

最佳答案

您遭遇名称冲突。查看代码中的这个位置:

U = input1.get()
P = input2.get()
R = input3.get()

def P():
#        <=============== point of interest
    myData = [[U, P, R]]

一个简单的变量P,但您只是用同名的函数定义覆盖了它。因此,当您写入文件时,您将获得函数的值,即函数描述符。

更改变量名称以避免冲突。一般来说,使用有意义的名称,您将避免这个问题(以及许多其他问题)。

user_id      = input1.get()
password     = input2.get()
display_name = input3.get()

def write_user_to_file():
    myData = [[user_id, password, display_name]]

此外,请考虑使用函数参数而不是全局变量。

关于Python 在 csv 中写入错误的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46839394/

相关文章:

python - 使用中序和先序遍历输出二叉树

python - 了解subprocess.TimeoutExpired,想在超时发生后杀死一个子进程

Java - 实体扩展限制。我在哪里设置这个?

python - 如何使用 BeautifulSoup 抓取分页表并将结果存储在 csv 中?

c++ - Qt Creator 在创建新项目时没有 "Qt Gui Application"可供选择

python - Tkinter 图形用户界面主循环 "ex ="

java - 如何在 JPanel 上将 double 或 float 显示为仅小数点后两位

python - 加密。如何用python3存储盐?

带有下划线的Python lambda作为参数?

mysql - 将数据从 CSV 文件导入 MySQL 表而不覆盖现有数据