【发布时间】:2021-12-24 14:57:17
【问题描述】:
我对 Python 中的文件处理和 csv 文件相当陌生。
代码
import csv
file1=open("Employee.csv","w",newline='\r\n')
empwriter=csv.writer(file1)
empwriter.writerow(["EmpID.","Name","MobNo."])
n=int(input("How many employee records do you want to add?:"))
for i in range(n):
print("\nEmployee Record",(i+1))
empid=input("Enter empID:")
name=input("Enter Name:")
mob=input("Enter Mobile No.:")
emprec=[empid,name,mob]
empwriter.writerow(emprec)
file1.close()
file2=open("Employee.csv","r+",newline='\r\n')
empreader=csv.reader(file2)
newwriter=csv.writer(file2)
check=input("\nEnter the empID to check:\n")
opt=int(input('''Which of the following fields do you want to update?:
1.Update the Name
2.Update the Mobile No.
3Update the whole record\n\n'''))
if opt==1:
for x in empreader:
if x[0]==check:
newname=input("Enter new name:")
x[1]=newname
print("Record Updated Successfully!\n Updated record:\n",x)
newwriter.writerow(x)
print(x)
elif opt==2:
for x in empreader:
if x[0]==check:
newmob=input("Enter new Mobile No.:")
x[2]=newmob
print("Record Updated Successfully!\n Updated record:\n",x)
newwriter.writerow(x)
print(x)
elif opt==3:
for x in empreader:
if x[0]==check:
newname=input("Enter new name:")
newmob=input("Enter new Mobile No.:")
x[1]=newname
x[2]=newmob
print("Record Updated Successfully!\n Updated record:\n",x)
newwriter.writerow(x)
print(x)
file2.close()
我曾在这段代码中尝试过
- 按用户输入记录(empID、Name、MobNo.)并制作一个 csv 文件。
- 使用 empID 查找所需记录。
- 更新该记录。
- 显示所有记录。
当我执行代码时,for 循环中的 print 语句在 if 语句之前执行并给我这个输出。
输出
How many employee records do you want to add?:3
Employee Record 1
Enter empID:001
Enter Name:John
Enter Mobile No.:1234567890
Employee Record 2
Enter empID:002
Enter Name:Jane
Enter Mobile No.:2345678901
Employee Record 3
Enter empID:003
Enter Name:Judy
Enter Mobile No.:4567890123
Enter the empID to check:
002
Which of the following fields do you want to update?:
1.Update the Name
2.Update the Mobile No.
3.Update the whole record
2
['EmpID.', 'Name', 'MobNo.']
['001', 'John', '1234567890']
Enter new Mobile No.:1111222233
Record Updated Successfully!
Updated record:
['002', 'Jane', '1111222233']
['002', 'Jane', '1111222233']
正如您在输出的最后几行中看到的那样。打印语句在 if 语句(或类似语句)之前执行。我实际上希望输出以下面给定的方式显示...
期望的输出
2
Enter new Mobile No.:1111222233
Record Updated Successfully!
Updated record:
['002', 'Jane', '1111222233']
['EmpID.', 'Name', 'MobNo.']
['001', 'John', '1234567890']
['002', 'Jane', '1111222233']
['003', 'Judy', '4567890123']
【问题讨论】:
-
您需要使用另一个
for循环来打印整个文件,或者将其存储在某个数组中。 -
当我在 empreader 中添加 ``` for rec 时:print(rec) `` 在最后.. 没有任何变化.. 如果可能的话,你可以分享一个简单版本的你想说的话?
标签: python csv for-loop if-statement