试图写入CSV文件,但收到错误消息:“\u CSV.writer”对象不可编辑

2024-04-26 13:16:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python创建一个票务系统,该系统能够写入和读取文件,但该程序似乎什么都不写。我收到了错误消息:

'_csv.writer' object is not iterable

“OKU”是指禁用的BTW.
“IC号码”是马来西亚的身份证号码

预期产出:

Name    Age  Sex    Malaysian   OKU  IC-Number  Passport-Number  Fee
Jack    25   Male   0           0      -        12345678         23.70

我已附上以下代码:

import csv

with open(input("\nInput file name with .csv extension: "), 'w+') as f:

    people = int(input("\nHow many tickets: "))
    name_l = []
    age_l = []
    sex_l = []
    local_l = []
    oku_l = []
    ic_number_l = []
    passport_number_l = []
    fee_l = []
    # visitors = 0
    adult = 0
    senior = 0
    child = 0       
    seniormsian = 0
    admsian = 0
    childmsian = 0
    foreigner_l = []
    adforeigner = 0
    childforeigner = 0      

    for p in range(people):

        name = str(input("\nName: "))
        name_l.append(name)

        malaysian = int(input("Malaysian (1 = Yes, 0 = No): "))

        age = int(input("Age: "))
        age_l.append(str(age))

        if malaysian == 1:
            oku = int(input("OKU (1 = Yes, 0 = No): "))
            oku_l.append(str(oku))
            if age >= 13 and age <= 59:
                fee = 17.80
                if oku == 1:
                    fee += 5
                print(fee)
                fee_l.append(fee)
                

            elif age >= 4 and age <= 12 or age >= 60:
                fee = 7.10
                if oku == 1:
                    fee += 5
                print(fee)
                fee_l.append(fee)

            else:
                fee = 0.00
                if oku == 1:
                    fee += 5
                print(fee)
                fee_l.append(fee)

            ic_number = str(input("Input IC Number: "))
            ic_number_l.append(ic_number)

            while len(ic_number) != 12:
                print("IC Number must be 12 digits long. Try again!")
                ic_number = str(input("Input IC Number: "))
                ic_number_l.append(ic_number)

                if len(ic_number) == 12:
                    break
            local_l.append(str(malaysian))

        else:
            if age >= 13:
                fee = 23.70
                print(fee)
                fee_l.append(fee)

            elif age >= 4 and age <= 12:
                fee = 17.80
                print(fee)
                fee_l.append(fee)
            else:
                fee = 0.00
                print(fee)
                fee_l.append(fee)

            passport_number = str(input("Input Passport Number: "))
            passport_number_l.append(passport_number)

            while len(passport_number) != 8:
                print("Passport Number must be 8 digits long. Try again!")
                passport_number = str(input("Input Passport Number: "))
                passport_number_l.append(passport_number)

                if len(passport_number) == 8:
                    break
            foreigner_l.append(malaysian)

        sex = str(input("Gender: "))
        sex_l.append(sex)

    writer = csv.writer(f, delimiter = '\t')
    writer.writerow([name, age, sex, malaysian, oku_l, ic_number_l, passport_number_l, fee])
    for row in writer:
        writer.writerow([name, age, sex, malaysian, oku_l, ic_number_l, passport_number_l, fee])