我有一个带有SKU和URL的csv,我可以将它们分为两个列表
def myskus():
myskus =[]
with open('websupplies2.csv', 'r') as csvf:
reader = csv.reader(csvf, delimiter=";")
for row in reader:
myskus.append(row[0]) # Add each skus to list contents
return myskus
def mycontents():
contents = []
with open('websupplies2.csv', 'r') as csvf:
reader = csv.reader(csvf, delimiter=";")
for row in reader:
contents.append(row[1]) # Add each url to list contents
return contents
然后我对URL进行多处理,但是我想加入对应的SKU
if __name__ == "__main__":
with Pool(4) as p:
records = p.map(parse, web_links)
if len(records) > 0:
with open('output_websupplies.csv', 'a') as f:
f.write('\n'.join(records))
我可以放吗 记录= p.map(解析,skus,web_links)
因为不起作用
我想要的输出格式 会是
sku price availability
bkk11 10,00 available
我该如何实现?
答案 0 :(得分:2)
我建议命名您的一对函数def get_skus()
和def get_urls()
,以符合您的问题定义。
有一对列表skus
和urls
似乎不太适合您的高级问题。
将它们放在一起,作为(sku
,url
)元组的列表或sku_to_url
字典。
也就是说,删除您的两个功能之一,因此您只读取一次CSV,并将相关详细信息保持在一起。
这样,您的parse()
例程就会有更多可用信息。
元组列表归结为Monty的starmap()
建议。
您正在使用此
if len(records) > 0:
with open('output_websupplies.csv', 'a') as f:
f.write('\n'.join(records))
首先,测试至少一个记录可能是多余的,打开附加然后写入零记录并不是世界末日。 如果您关心文件上的时间戳,那么这可能是有用的优化。
更重要的是,write()
似乎很糟糕。
有一天,一个不幸的角色可能会潜入您的记录之一。
最好将结构化记录馈送到csv.writer
,以确保适当的报价。