Python 当整数超过最大值时复制CSV文件

Python 当整数超过最大值时复制CSV文件,python,python-2.7,csv,typeerror,Python,Python 2.7,Csv,Typeerror,如果该输入存在于特定行中,例如第行WORD4(第3行)中的DD,则程序将要求他们输入一个整数,如果该整数超过某个数字,则程序将写入该整数,包括该行 大概是这样的: a0,a1,a2,a3,a4 JA,BV,PA,DD,6 我收到的错误是: TypeError: writerows() takes exactly one argument (2 given) 及 感谢Joel Johnson和Stevieb解决了这个问题 解决方案如下,谢谢Joel Johnson:writerows

如果该输入存在于特定行中,例如第
行WORD4
(第3行)中的DD,则程序将要求他们输入一个整数,如果该整数超过某个数字,则程序将写入该整数,包括该行

大概是这样的:

a0,a1,a2,a3,a4    
JA,BV,PA,DD,6
我收到的错误是:

TypeError: writerows() takes exactly one argument (2 given) 

感谢Joel Johnson和Stevieb解决了这个问题

解决方案如下,谢谢Joel Johnson:
writerows()
只接受一个参数。下面的代码将
行[3]
追加到该行,然后将整行作为其唯一参数发送到
writerow()
。我还将writer文件移到了循环之外,否则,如果出现多个匹配,您将在每次迭代中覆盖它

with open('CSVFile1.csv', 'rb') as csvfile:

    fh = csv.reader(csvfile)
    wfh = open('CSVFile2.csv', 'ab')

    for row in fh:
        if user_input in row[3] and int(integer_input) > 5:
            row.append(integer_input)
            writer = csv.writer(wfh)
            writer.writerow(row)

    wfh.close()

首先,您需要使用带有open('CSVFile2.csv','a')的
作为f:
来向文件写入任何内容(如果您希望将任何内容保留在
CSVFile2.csv
中,或者如果要覆盖它,请使用
'w'

第二,因为您只尝试使用格式写入一行
['JA',BV','PA','DD','6']
使用
writer.writerow()
而不是
writer.writerow()
否则您将以
J,A,B,V,P,A,D,D,6
作为输出

第三,只需将
integer\u输入
附加到
,然后将其传递给
writer.writerow()
还要注意,它需要采用str()格式

如果您有任何其他问题,我会让您参考文档

例如:

with open('CSVFile1.csv', "rb") as csvfile:
    a = csv.reader(csvfile, delimiter=',')
    for row in a:
        if user_input in row[3] and integer_input>5:
            with open('CSVFile2.csv', 'a') as f:
                new_row = row
                new_row.append(str(integer_input))
                writer = csv.writer(f)
                writer.writerow(new_row)
                f.close()

我收到了这个错误,不知道为什么:
writer.writerow(new_row)\u csv.error:sequence expected
这就是我在没有测试的情况下发布的结果:P,我错过了一个命令,我更新了代码。现在应该可以了,谢谢你,伙计!真的很有帮助。现在了解我做错了什么。对于
wfh=open('overlimit.csv','w',newline='')
它说还有另一个类型错误:
TypeError:'newline'是这个函数的无效关键字参数。
:(知道为什么吗?我想你需要将'w'改为'wb',并删除“newline=”)部分。您可能还需要将第一个文件中的“r”更改为“rb”。我在Python3上进行测试,有些情况有所不同。谢谢,这也可以!只需将“r”更改为“rb”,将“w”更改为“a”:
with open('CSVFile1.csv', "rb") as csvfile:
    a = csv.reader(csvfile, delimiter=',')
    for row in a:
        if user_input in row[3] and integer_input>5:
            with open('CSVFile2.csv', 'a') as f:
                new_row = row
                new_row.append(str(integer_input))
                writer = csv.writer(f)
                writer.writerow(new_row)
                f.close()