簡體   English   中英

如何 append 到 csv 文件中的用戶指定行?

[英]How to append to user specified line in csv file?

語境:

您好 - 我需要 append 將單詞“CANCELLED”添加到 csv 文件中指定行的末尾。 該程序的用戶被要求輸入(搜索)姓氏。 如果在 CSV 文件中找到姓氏,則應將“CANCELLED”一詞添加到包含該姓氏的行的最末尾。

問題:

使用我目前擁有的代碼,該行可以正確打印,因為它應該出現在 csv 文件中。 但是,由於某種原因,它沒有保存到 csv 文件中。

附上代碼 - 如果我能更清楚,請告訴我。 謝謝!

elif menuSelect == "7":
    print("CXL MENU")
    print("---------")
    print("1. Cancel by Last Name \n")
    print("2. Cancel by Confirmation #\n")
    cancelSelect = input("Select an option: ")
    lastName = input("Enter Last Name: ")
    ResStatus = "CANCELLED"
    if cancelSelect == "1":
        #open csv file, search for lastName input
        with open ('hotelguests.csv', 'rt') as csv_file:
            csv_reader = csv.reader(csv_file, delimiter=',')
            for row in csv_reader:
                if row[0] == lastName:
                    #Write ResStatus variable to row containing lastName input
                    with open ('hotelguests.csv', 'w') as csv_file:
                        csvwriter = csv.writer(csv_file)
                        csvwriter.writerow([ResStatus])
                        print(row)

這是我不久前發明一種技術,旨在通過利用 Python 標准庫中的fileinput模塊的功能,使重寫 CSV 文件相對容易。

它的工作原理是創建一個臨時文件並將打印的所有內容存儲在其中,然后在完成后有效地替換原始文件。 在下面的代碼中,保存了附加擴展名為.sav的原始文件的副本(可選功能,請參閱文檔)。

以下是如何使用它來做你想做的事:

import csv
import fileinput

file_name = 'hotelguests.csv'
#cancelSelect = input("Select an option: ")
cancelSelect = "1"
#lastName = input("Enter Last Name: ")
lastName = "Trump"
ResStatus = "CANCELLED"
if cancelSelect == "1":
    with fileinput.FileInput(files=file_name, inplace=True, backup='.sav') as csvfile:
        for row in csv.reader(csvfile):
            if row[0] == lastName:
                row.append(ResStatus)
            print(','.join(row))  # Print as comma-separated list of values.
    print('file updated')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM