【发布时间】:2019-04-17 19:07:11
【问题描述】:
我有几个 for 循环,每个循环输出多行代码我需要逐列组合它们,我将附上下面的代码以解释和显示我的请求:
myFile = open('example2.csv', 'w')
links = driver.find_elements_by_css_selector('html body div#wrapper div.container.coins div.mt-3 div.col-12.row.p-0.m-0 div.col-lg-8.col-md-8.d-flex.justify-content-center.flex-md-row.align-middle.align-items-center.justify-content-md-start.p-0.m-0 div.mr-md-3.mx-2.mb-md-0.text-3xl.font-semibold')
for linka in links:
linka = str(linka.text)
print(linka+'\n')
links = driver.find_elements_by_xpath('/html/body/div[2]/div[4]/div[4]/div[3]/div[1]/div/div[2]')
for linkb in links:
linkb = str(linkb.text)
print(linkb+'\n')
links = driver.find_elements_by_css_selector('div.coin-link-row:nth-child(3)')
for linkc in links:
linkc = str(linkc.text)
print(linkc+'\n')
links = driver.find_elements_by_css_selector('html body div#wrapper div.container.coins div.mt-3 div.col-12.row.p-0.m-0.mb-2.d-flex.flex-column-reverse.flex-sm-row div.col-md-9.col-lg-7.p-0 div.d-flex.flex-column.mx-3.mx-sm-5.mx-md-0 div.coin-link-row.mb-md-0')
for linkd in links:
linkd = str(linkd.text)
print(linkd+'\n')
myData = [["Linka", "Linkb", "Linkc","Linkd"],
[linka,linkb,linkc,linkd]]
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
另外我通常会遇到这个错误
I/O operation on closed file
我需要 CSV 文件中的输出如下所示
Linka, Linkb, Linkc, Linkd
linka(loop no 1), linkb(loop no 1), linkc(loop no 1), linkd(loop no 1)
linka(loop no 2), linkb(loop no 2), linkc(loop no 2), linkd(loop no 2)
linka(loop no 3), linkb(loop no 3), linkc(loop no 3), linkd(loop no 3)
linka(loop no 4), linkb(loop no 4), linkc(loop no 4), linkd(loop no 4)
更新以下代码:
for one in many:
time.sleep(1)
print(str(one.text) + '\n')
one.click()
with open('example2.csv', 'w') as myFile:
writer = csv.writer(myFile)
writer.writerow(["Linka", "Linkb", "Linkc", "Linkd"])
linksa = driver.find_elements_by_css_selector(
'html body div#wrapper div.container.coins div.mt-3 div.col-12.row.p-0.m-0 div.col-lg-8.col-md-8.d-flex.justify-content-center.flex-md-row.align-middle.align-items-center.justify-content-md-start.p-0.m-0 div.mr-md-3.mx-2.mb-md-0.text-3xl.font-semibold')
linksb = driver.find_elements_by_xpath('/html/body/div[2]/div[4]/div[4]/div[3]/div[1]/div/div[2]')
linksc = driver.find_elements_by_css_selector('div.coin-link-row:nth-child(3)')
linksd = driver.find_elements_by_css_selector(
'html body div#wrapper div.container.coins div.mt-3 div.col-12.row.p-0.m-0.mb-2.d-flex.flex-column-reverse.flex-sm-row div.col-md-9.col-lg-7.p-0 div.d-flex.flex-column.mx-3.mx-sm-5.mx-md-0 div.coin-link-row.mb-md-0')
for linka, linkb, linkc, linkd in zip(linksa, linksb, linksc, linksd):
writer.writerow([linka.text, linkb.text, linkc.text, linkd.text])
谢谢Barmar,你解决了我的问题(请大家投票支持@Barmar 的答案,因为我没有足够的声誉,实际上他应得的)
【问题讨论】:
-
myFile来自哪里?好像已经关门了。 -
如果你能简化这篇文章就好了into a MCVE
-
应该是
with open('example2.csv', 'w') as myFile: -
@brunns 我添加了这一点,我已经在我的代码中添加了它但我没有将它复制到这里。
-
我不明白你在做什么。每次循环都会覆盖
linkb、linkc等。