我有网址列表,例如:
urls_list = [
"http://yandex.ru",
"http://google.ru",
"http://rambler.ru",
"http://google.ru",
"http://gmail.ru",
"http://mail.ru"
]
我需要打开csv文件,检查文件列表中的每个值 - 跳到下一个值,否则(如果值不在列表中)在列表中添加此值。
结果:第一次运行 - 添加所有行(如果文件为空),第二次运行 - 什么都不做,因为已经在文件中的所有元素。
编写代码,但它的工作完全不正确:
import csv
urls_list = [
"http://yandex.ru",
"http://google.ru",
"http://rambler.ru",
"http://google.ru",
"http://gmail.ru",
"http://mail.ru"
]
with open('urls_list.csv', 'r') as fp:
for row in fp:
for url in urls_list:
if url in row:
print "YEY!"
with open('urls_list.csv', 'a+') as fp:
wr = csv.writer(fp, dialect='excel')
wr.writerow([url])
答案 0 :(得分:1)
将文件读入变量 -
with open('urls_list.csv', 'r') as fp:
s = fp.read()
检查每个列表项是否在文件中,如果不保存
missing = []
for url in urls_list:
if url not in s:
missing.append(url + '\n')
将丢失的网址写入文件
if missing:
with open('urls_list.csv', 'a+') as fp:
fp.writelines(missing)
答案 1 :(得分:1)
考虑到您的文件只有一列,setState
模块可能是一种过度杀伤力。
这是一个首先从文件中读取所有行并重新打开文件以写入文件中尚未存在的URL的版本:
csv