CSV写入文件困难

Reg*_*mal 9 python csv python-2.x file-writing python-2.7

我应该CSV根据条件为我的文件添加一个特定的标签.该CSV文件有10列,第三,第四和第五列是影响条件最多的列,我在第十列添加我的标签.我这里的代码以无限循环结束:

import csv
import sys

w = open(sys.argv[1], 'w')
r = open(sys.argv[1], 'r')

reader = csv.reader(r)
writer = csv.writer(w)

for row in reader:
    if row[2] or row[3] or row[4] == '0':
        row[9] == 'Label'
        writer.writerow(row)

w.close()
r.close()
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它会以无限循环结束.

编辑:我犯了一个错误,我原来的无限循环程序有这条线:

w = open(sys.argv[1], 'a')
Run Code Online (Sandbox Code Playgroud)

我改'a''w'但这最终删除整个CSV文件本身.所以现在我有一个不同的问题.

mid*_*ori 8

你在这里if row[2] or row[3] or row[4] == '0':和这里有一个问题row[9] == 'Label',你可以any用来检查几个等于相同值的变量,并=用来分配一个值,我也建议你使用with open.

此外,您无法在csv文件中同时读取和写入,因此您需要将更改保存到新的csv文件,您可以删除原始文件并使用os.remove和重命名新文件os.rename:

import csv
import sys    
import os

with open('some_new_file.csv', 'w') as w, open(sys.argv[1], 'r') as r:
    reader, writer = csv.reader(r), csv.writer(w)
    for row in reader:
        if any(x == '0' for x in (row[2], row[3], row[4])):
            row[9] = 'Label'
        writer.writerow(row)

os.remove('{}'.format(sys.argv[1]))
os.rename('some_new_file.csv', '{}'.format(sys.argv[1]))
Run Code Online (Sandbox Code Playgroud)

  • 我弄明白了,你有行[9] =='标签'而不是行[9] ='标签' (2认同)