我遇到了一个问题,其中:我的代码创建了一个带有标题的文件,将数据写入其中。然后,当我第二次运行它时,它会覆盖数据,它应该开始一个新的行。此外,分隔符的含义是什么?
#Intro
import csv
headers=["Name","Age","Year Group"]
with open("Details.csv","a" and "w") as i:
w=csv.writer(i,delimiter=",")
w.writerow(headers)
print("Welcome User, to my Topics Quiz!\n------------------------------
---------\nYou can choose from 3 different topics:\n • History\n • Music\n •
Computer Science\n---------------------------------------")
#Storing: User's name, age and year group
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)
with open("UserPass.csv","a" and "w") as Userpass:
w=csv.writer(Userpass,delimiter=",")
headers=["Username","Password"]
w.writerow(headers)
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)
因此代码会在我想要添加时写出数据。
提前致谢。
答案 0 :(得分:0)
您的模式仅为"w"
:
>>> "a" and "w" == "w"
True
而是仅使用"a"
。
答案 1 :(得分:0)
a 对于开放模式已经足够了。
追加:" a" 在其定义中有写:" w" 。当你说你要追加它意味着你想在最后写...所以不要一起使用它们。
分隔符表示分隔符,大多数时候都会引用一些字符,如逗号,空格,点等。
答案 2 :(得分:0)
如果您希望附加到现有的.csv文件,则需要:
os.path.exists()
)或 正如其他人所说,你的文件打开模式应该是以下之一:
分隔符指定.csv文件中字段的分隔。
另外,您应该永远存储密码 - 而应该存储密码的哈希值,当用户下次输入密码时,计算相同的哈希值并将其与存储的哈希值进行比较。类似的东西:
import hashlib
import getpass
pswd = getpass.getpass()
userpass = hashlib.sha256(pswd.encode('ascii')).hexdigest()
答案 3 :(得分:0)
对于术语分隔符,请记住CSV代表逗号分隔值。 Delimiter 表示分隔符; CSV使用逗号(",")作为其分隔符或分隔符,但python模块csv
为您提供了指定不同分隔符的选项,例如制表符({{1} })等等。
对于文件操作,您可以检查文件是否为空。如果是,请编写标题。然后(总是)追加数据。像这样:
"\t"
希望这有帮助!