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()