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

Python 使用csv.writer将值写入特定列,python,csv,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 ? 等等。你很接近,下

这是我的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 ?

等等。

你很接近,下面是工作代码:

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)将只使用两个值1和10进行迭代,而不是您想要的值
  • 帮助(writer.writerow)
    告诉您它需要一个序列。因此,将其参数括在
    […]

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


首先,正如所指出的,范围函数中存在错误,即在分配元组时,必须使用函数
范围(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),则该文件将被操作系统锁定。这将导致程序等待锁打开(如果是阻塞写入),否则将抛出
权限被拒绝
错误。(仅当您使用专有软件时才会发生这种情况。)如果使用记事本++打开,则不会发生此错误

谢谢你,巴尔加夫,我认为它会起作用,但同时我的权限被拒绝:当我尝试写入csv时file@elyon您是否在其他地方打开了输出文件?我猜…它试图写入一个无法获取open实例的文件..因为它已经打开了?谢谢bhargav上面的代码工作得很好……但是如果我想要一个管道分隔的输出,例如:1 | 0 | 0 | Amazon,我应该在哪里对代码进行更改呢。而不是commas@elyon
writer.writerow([“{}{}{}{}}{}}{}.format(id,X,0,Amazon”)感谢您的更正:)…我在尝试将数据写入csv文件时遇到问题…它表示权限被拒绝,但当我看到该文件的属性时,它确实具有完全控制权限set@elyon:那将是一个独立的、不相关的问题=>问一个独立的问题。(谁取消了投票?叹气)
1,0,0,Amazon 
1,1,0,Amazon
1,2,0,Amazon