我的代码每次都创建相同的头,我希望它创建一个,并将数据附加到CSV而不创建新的头。你知道吗
import csv
with open("Details.csv","a+") as Details:
w=csv.writer(Details,delimiter=",")
headers1=["Name","Age","Year Group"]
line=Details.readlines()
if line!=["Name","Age","Year Group"]:
w.writerow(headers1)
print("Welcome User, to my Topics Quiz!\n-------------------------------
--------\nYou can choose from 3 different topics:\n • History\n •
Music\n • Computer Science\n---------------------------------------")
print("Before we start, we need to register an account.")
User=input("Enter your name:\n")
Age=input("Enter your age:\n")
Year=input("Enter your year group:\n")
details=[User,Age,Year]
w.writerow(details)
Details.close()
with open("UserPass.csv","a+") as Userpass:
w=csv.writer(Userpass,delimiter=",")
headers2=["Username","Password"]
if headers2 not in Userpass:
w.writerow(headers2)
NewUser=(User[:3]+Age)
print("Great! Your username is set to: {}".format(NewUser))
Pass=input("Enter a password for your account:\n")
userpass=[NewUser,Pass]
w.writerow(userpass)
Userpass.close()
非常感谢您的帮助。你知道吗
我不理解您的代码试图完成的所有任务,但是下面将向
Details.csv
添加一行,而不创建任何新的头:您应该考虑遵循PEP 8 - Style Guide for Python Code的建议,因为这将使您的代码更易于您和其他人阅读。你知道吗
您正在以追加模式(https://docs.python.org/3/library/functions.html#open)打开文件,因此
line=Details.readlines()
将始终是空行,并且每次都会写入头文件(如果,代码将始终进入)。你知道吗与其他文件类似。所以我建议您首先检查文件是否存在,如果不存在,请创建文件并添加头文件,并从
with
中删除头文件部分:代码中存在不同的问题:
1)csv文件中有数据的行之间的空行,这是由于打开的非二进制类型造成的,可以通过在打开函数中添加arg来修复:
2)在你的情况下详细信息.readlines()方法返回[],因为a+类型的打开,它应该在文件末尾添加行,所以指针已经在末尾,我们需要使用该代码在开头返回它:
3)而且,我们只需要第一行,所以只需要使用readline()方法。毕竟,您的条件应该是这样的,因为返回类型和事实是在每一行的末尾都有:
以及那部分的完整代码。让我知道它是否适合您:
相关问题 更多 >
编程相关推荐