我不是专门的程序员,这是我第一次做这样的事情。
我创建了一个While循环,该循环使用将被写入CSV文件的条目。
我不知道如何重复循环,因此新值将按字母顺序写入新行。
我设法使该程序可以运行,但只有一次只能进入一行。每次您重新启动程序并输入新内容时,它将覆盖CSV中的旧数据行。
import csv
fields = ['Name', 'Surname', 'Status']
rows = [[]]
while True:
status=input("Enter status number: ")
if status !="3":
print("Wrong status number.")
else:
surname=input("Enter surname: ")
name=input("Enter name: ")
value=surname+"-"+name+"-"+name+"."+surname+"@mail.com"+","+status
print(value)
value=name+","+surname+","+name+"."+surname+"@mail.com"+","+status
for inner_row in rows:
_name=name
_surname=surname
_name_surname=name+"."+surname+"@mail.com"
rows[0].append(_name)
rows[0].append(_surname)
rows[0].append(_name_surname)
rows[0].append(status)
break
filename = "university_records.csv"
with open(filename, 'w') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(fields)
csvwriter.writerows(rows)
答案 0 :(得分:0)
要在每次运行程序时不覆盖数据,只需在中使用上下文管理器将 w 更改为 a :
with open(filename, "a") as csvfile:
“ w”用于 write ,“ a”用于 append
但是,您每次运行程序时也要编写字段(名称,姓氏等),这可以使用简单的if语句来解决。文件对象(csvfile)具有称为 tell()的方法,该方法返回光标在文件对象中的位置。如果位置为0,则该文件是新文件,然后您打印字段。否则你会跳过
if csvfile.tell() == 0:
csvwriter.writerow(fields)
我还认为您缺少该文件作为正确的csv文件的字段。
fields = ['Name', 'Surname', 'email', 'Status']
希望这对您有帮助
答案 1 :(得分:0)
import csv
import os
fields = ['Name', 'Surname', 'Email', 'Status']
filename = "university_records.csv"
rows = []
if os.path.isfile(filename):
with open(filename) as csv_file:
csv_reader = csv.reader(csv_file)
next(csv_reader) # skip header
for row in csv_reader:
rows.append(row)
while True:
status = input("Enter status number (or 'exit' to exit): ")
if status == "exit":
break
if status != "3":
print("Wrong status number.")
else:
surname = input("Enter surname: ")
name = input("Enter name: ")
email = name + "." + surname + "@mail.com"
rows.append([name, surname, email, status])
with open(filename, 'w') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(fields)
csv_writer.writerows(sorted(rows))
答案 2 :(得分:0)
感谢帮助人员。我已经完成了这项工作,所以我不想复制粘贴您的代码时100%“作弊”。因此,我将两者混为一谈,直到可以解释代码中发生的事情为止。
最诚挚的问候!