Csv Reader期望一个字符缓冲区对象

时间:2016-02-26 07:59:12

标签: python dns record

我有DNS记录为csv格式,它有HostName和IPAdress标签。 İt包括公共和私人(“192.168”,“172.16”和“10.0”)IP地址,我想彼此分开。当我运行我的代码ı采取“预期一个字符缓冲对象”错误代码。如何解决这个问题

import csv
with open('Dns.csv', 'rb') as csvfile:
 reader = csv.DictReader(csvfile)
 for row in reader:
  if "10.205" in row['IPAddress']:
  file10=open("Zone10.txt","a")
  a=(row['hostname'], row['IPAddress'])
  file10.write(a)

1 个答案:

答案 0 :(得分:1)

原因是你正在尝试将元组写入file10。所以应该修改下一行

a=(row['hostname'], row['IPAddress'])
file10.write(a)

例如,如果您要将其作为字符串写入,则可以执行以下操作:

file10.write(' '.join(a))  # it will work 

a='{}{}'.format(row['hostname'], row['IPAddress'])
file10.write(a)

顺便说一下,最好还是使用上下文管理器来打开file10

关于CSV输出的评论:

output = []
for row in reader:
    if "10.205" in row['IPAddress']:
        output.append(row)
if output:
    with open('Zone.csv', 'wb') as zonefile:
        writer = csv.DictWriter(zonefile, fieldnames=output[0].keys())
        writer.writeheader()
        writer.writerows([row for row in output])

这是非常快速编写的代码,但我希望它会有所帮助