Python中的CSV写错误的事情
问题描述:
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]]
此外,请考虑使用函数参数,而不是全局变量。
+0
Thankyou那工作 – BENZINI
你能格式化你的代码吗?这一个不是很好。 – PerunSS
借调,代码没有正确缩进。尝试用四个空格缩进整个代码,然后将其粘贴回问题中。 – mjsqu
看起来,在写入csv的地方,你正在写'P',它实际上是引用函数'P()',而不是你之前分配给变量'P'的输入。使用适当的变量和函数名可以避免这个问题。 –