簡體   English   中英

將帶有CSV路徑的新行附加為字符串對象Python

[英]append new row with CSV path as a string object Python

我正在搜索如何在Python中向CSV追加新行。 我想要的是將路徑預定義為字符串對象。 我遇到了這個

import csv   
fields=['first','second','third']
with open(r'name', 'a') as f:
    writer = csv.writer(f)
    writer.writerow(fields)

我想要的是在上面的實現中修改過的東西

path='home/user/new.csv'
import csv   
fields=['first','second','third']
with open(rpath , 'a') as f:
    writer = csv.writer(f)
    writer.writerow(fields)

我似乎無法做到這一點,因為參數r出現在參數path之外。 有人可以指導如何做嗎?

在您引用的原始代碼段中, r前綴告訴python將字符串視為原始字符串,並在字符串中保留反斜杠。 (有關詳細說明,請參閱https://docs.python.org/2/reference/lexical_analysis.html#string-literals

所以r只能在像r'somestring'這樣的字符串文字之前r'somestring'前綴。

在您的示例中,您將變量名稱定義為path 但是后來您將其稱為rpath。 在代碼的任何地方都沒有定義rpath 因此它將引發錯誤。 您可以將其更改為

with open(path , 'a') as f:

讓我們假設下面是您的new.csv文件,並且您想要添加一行new_row作為CSV的第四行:

$ cat  new.csv
SN, Num1, Num2
1, one, two
2, three, four
3, five, six

下面的代碼可以做到這一點。

$ cat appendCsv2.py
#!/isr/bin/python3
import csv

new_row =['4', 'first','second','third']
with open('new.csv', 'a') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerow(new_row)
csvFile.close()

所需的輸出:

$ cat new.csv
SN, Num1, Num2
1, one, two
2, three, four
3, five, six
4,first,second,third

別忘了關閉文件!

來自Python文檔優良作法是在處理文件對象時使用with關鍵字。 這樣做的好處是,即使在執行過程中引發了異常,文件在其套件完成后也將正確關閉。 它也比編寫等效的try-finally塊要短得多:

>>> with open('workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

你是這個意思嗎

import csv

path='/home/user/new.csv'
fields=['first','second','third']
# To prevent newline by writerow(), open with newline=""
with open(path , 'a', newline="") as f:
  writer = csv.writer(f)
  writer.writerow(fields)

暫無
暫無

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

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