簡體   English   中英

python csv有問題

[英]having problems with python csv

我在使用 python csv 模塊時遇到問題我試圖在 csv 文件中寫一個換行符 是否有任何原因它不起作用?

代碼:

csv writing function
    def write_response_csv(name,games,mins):
    with open("sport_team.csv",'w',newline='',encoding='utf-8') as csv_file:
        fieldnames=['Vardas','Žaidimai','Minutės']
        writer = csv.DictWriter(csv_file,fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow({'Vardas':name,'Žaidimai':games,"Minutės":mins})


    with requests.get(url,headers=headers) as page:
    content = soup(page.content,'html.parser')
    content = content.findAll('table',class_='table01 tablesorter')
    names = find_name(content)
    times = 0
    for name in names:
        matches = find_matches(content,times)
        min_in_matches = find_min(content,times)
        times +=1
        csv_file = write_response_csv(name,matches,min_in_matches)
        try:
            print(name,matches,min_in_matches)
        except:
            pass

當您調用 write_response_csv 函數時,它會重新打開文件並再次從 csv 文件的第 1 行開始,並且您傳遞給該函數的每一行新數據都會覆蓋之前寫入的數據。 您可以嘗試在編寫器函數范圍之外創建 csv 文件,並將編寫器函數設置為追加模式而不是寫入模式。 這將確保它將數據寫入下一個空的 csv 行,而不是從第 1 行開始。

#Outside of function scope
fieldnames=['Vardas','Žaidimai','Minutės']
#Create sport_team.csv file w/ headers
with open('sport_team.csv', 'w',encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames)
    writer.writeheader()

#Write response function
def write_response_csv(name,games,mins):
        with open('sport_team.csv','a',encoding='utf-8') as csv_file:
            writer = csv.DictWriter(csv_file, fieldnames)
            writer.writerow({'Vardas':name,'Žaidimai':games,"Minutės":mins})

注意:如果您重復使用這個腳本來不斷地向同一個文件添加新的數據行,您將遇到同樣的問題,因為每次運行它時,創建 csv 文件的代碼實際上將重新創建一個空白的 Sport_team.csv 文件標題。 如果您想重復使用代碼來不斷添加新數據,我會考慮使用 os.path 並利用它來確認 Sport_team.csv 是否已經存在,如果存在,則不要在字段名稱之后運行該代碼。

嘗試使用 metabob,它會為您查找代碼錯誤。 我一直在使用它作為 Python 初學者,並且已經非常成功。

暫無
暫無

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

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