将带有CSV路径的新行附加为字符串对象Python

时间:2018-10-01 07:20:18

标签: python csv row

我正在搜索如何在Python中向CSV追加新行。我想要的是将路径预定义为字符串对象。我遇到了this

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之外的参数中。有人可以指导如何做吗?

3 个答案:

答案 0 :(得分:1)

在您引用的原始代码段中,r前缀告诉python将字符串视为原始字符串,并在字符串中保留反斜杠。 (有关详细说明,请参见https://docs.python.org/2/reference/lexical_analysis.html#string-literals

因此,r只能在诸如r'somestring'这样的字符串文字之前加上前缀。

在您的示例中,您将变量名称定义为path。但是后来您将其称为rpath。 rpath未在代码中的任何位置定义。因此它将引发错误。 您可以将其更改为

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

答案 1 :(得分:1)

让我们假设下面是您的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

别忘了关闭文件!

来自Live Demo for both GCC and Clang 在处理文件对象时,最好使用with关键字。这样做的好处是,即使在执行过程中引发了异常,文件在其套件完成后也将正确关闭。它也比编写等效的try-finally块要短得多:

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

答案 2 :(得分:0)

你是这个意思吗?

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)