PythonCSV:如何将数据附加到csv文件中?

2024-09-28 23:01:38 发布

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

我读过其他的question并尝试过,但没有成功。data.csv中已有1行(名为productId),我想将数据添加到已创建标题下的新行中(productUrl、discount、evaluateScore、volume、packageType、lotNum、validTime、storeName、storeUrl、allimageurl

import csv

def get_details():
    pid = get_id()
    print(pid)
    data = aliexpress.get_product_details(['productId', 'productUrl', 'discount', 'evaluateScore',
                                           'volume', 'packageType', 'lotNum', 'validTime', 'storeName', 'storeUrl',
                                           'allImageUrls'], pid)
    with open('data.csv', 'a', newline='') as csvfile:
        fieldnames = ['productUrl', 'discount', 'evaluateScore',
                                           'volume', 'packageType', 'lotNum', 'validTime', 'storeName', 'storeUrl',
                                           'allImageUrls']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        productUrl = data['productUrl']
        discount = data['discount']
        evaluateScore = data['evaluateScore']
        volume = data['volume']
        packageType = data['packageType']
        lotNum = data['lotNum']
        validTime = data['validTime']
        storeName = data['storeName']
        storeUrl = data['storeUrl']
        allImageUrls = data['allImageUrls']
        allImageUrlstuple = allImageUrls.split(',')
        print(allImageUrls)
        writer.writerow({'productUrl': productUrl, 'discount': discount, 'evaluateScore': evaluateScore,
                                           'volume': volume, 'packageType': packageType, 'lotNum': lotNum, 'validTime': validTime, 'storeName': storeName, 'storeUrl': storeUrl,
                                           'allImageUrls': allImageUrlstuple})

Tags: csvdatagetdiscountpidvolumefieldnamesproducturl
2条回答

如果标头已在CSV中,则无需重新写入标头。删除writer.writeheader()

例如:

import csv

def get_details():
    pid = get_id()
    print(pid)
    data = aliexpress.get_product_details(['productId', 'productUrl', 'discount', 'evaluateScore',
                                           'volume', 'packageType', 'lotNum', 'validTime', 'storeName', 'storeUrl',
                                           'allImageUrls'], pid)
    with open('data.csv', 'a', newline='') as csvfile:
        fieldnames = ['productUrl', 'discount', 'evaluateScore',
                                           'volume', 'packageType', 'lotNum', 'validTime', 'storeName', 'storeUrl',
                                           'allImageUrls']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        productUrl = data['productUrl']
        discount = data['discount']
        evaluateScore = data['evaluateScore']
        volume = data['volume']
        packageType = data['packageType']
        lotNum = data['lotNum']
        validTime = data['validTime']
        storeName = data['storeName']
        storeUrl = data['storeUrl']
        allImageUrls = data['allImageUrls']
        allImageUrlstuple = allImageUrls.split(',')
        print(allImageUrls)
        writer.writerow({'productUrl': productUrl, 'discount': discount, 'evaluateScore': evaluateScore,
                                           'volume': volume, 'packageType': packageType, 'lotNum': lotNum, 'validTime': validTime, 'storeName': storeName, 'storeUrl': storeUrl,
                                           'allImageUrls': allImageUrlstuple})

重写文件可能更容易:

with open('data.csv',newline='') as csvfile:
    r = csv.reader(csvfile)
    data = [line for line in r]

with open('data.csv','w',newline='') as csvfile:
    w = csv.writer(csvfile)
    w.writerow(['col1','col2'])
    w.writerows(data)

相关问题 更多 >