使用csv.writer将值写入特定列

时间:2014-12-17 13:26:23

标签: python csv

这是我的python代码:

import csv
with open('C://FolderName//File.csv', 'wb') as f:
    writer = csv.writer(f)

    for id in (1,10):
        for X in (0,10):
            writer.writerow(id,X,0,"Amazon"); // <- How do i write this using writer ?

csv文件中的所需输出,例如:对于id = 1和X = 0 - 10

 1 0 0 Amazon 
 1 1 0 Amazon
 1 2 0 Amazon

等等。

2 个答案:

答案 0 :(得分:1)

你很接近,这是工作代码:

import csv
with open('C://FolderName//File.csv', 'wb') as f:
    writer = csv.writer(f)

    for id in range(1,10):  # note use of range()
         for X in range(0,10):  # note use of range()
             writer.writerow([id,X,0,"Amazon"])  # requires a sequence [...]

修正:

    在for循环中
  • ,如果你想迭代1,2,3,...,9,10,你需要range(1,10),而不仅仅是元组(1,10) - 这只是用两个值1和10迭代,而不是你想要的值
  • help(writer.writerow)告诉你它需要一个序列。因此,您将其args包含在[...]

  • 顺便说一句,你不需要在你的路径名中加倍 - //。如果使用\\,则只需要将斜杠符号加倍,因为它需要在Python字符串中进行转义(除非它是原始字符串:r&#39; C:\ Folder \ File&#39;) 。但无论如何,Windows接受正斜杠,所以只使用正斜杠而不是反斜杠。

答案 1 :(得分:1)

首先正如所指出的那样,范围函数中存在错误,因为在分配元组时必须使用函数range(1,10)而不是(1,10)

并写下你需要一个清单

也考虑这个

writer.writerow(["{} {} {} {}".format(id,X,0,"Amazon")]);

输出为

1 0 0 Amazon 
1 1 0 Amazon
1 2 0 Amazon

如果你这样做

writer.writerow([id,X,0,"Amazon"])

输出

1,0,0,Amazon 
1,1,0,Amazon
1,2,0,Amazon

发表评论编辑

每当您需要写入文件时,程序将请求操作系统移交写入权限。但是,如果该文件已在其他地方打开(如excel),则该文件将被操作系统锁定。这将导致程序等到锁打开(如果是阻塞写入),否则将抛出Permission Denied错误。 (只有在使用专有软件时才会发生这种情况。)如果使用Notepad ++打开,则不会发生此错误