我尝试将网址中的文件保存到计算机上的文件夹中,但我在列表中有732个网址(保存后会提供实验数据)。我尝试在所有这些网址上运行for loop
,以便将每个数据集保存到自己的文件中。这就是我现在正在做的事情:
for i in ExperimentURLs:
myurl123 = str(i)
myreq = urllib.request.urlopen(myurl123)
mydata = myreq.read()
with open('/Users/lauren/Desktop/IDData/file', 'wb') as ofile:
ofile.write(mydata)
ExperimentURLs
是我的网址列表,但我不知道如何处理for loop
将每个数据集保存到新文件中。目前,此代码仅将单个实验的数据写入文件并停在那里。如果我尝试将其保存为其他文件名,则需要使用不同的实验数据并将其保存到文件中。帮助
答案 0 :(得分:1)
首先,每次循环时都需要自动生成一个新的输出文件名。我会在下面给你一些简单的版本。另请注意,URL已经是字符串;你不必转换它们。
pos = 0
for myurl123 in ExperimentURLs:
myreq = urllib.request.urlopen(myurl123)
mydata = myreq.read()
out_file = '/Users/lauren/Desktop/IDData/file' + str(pos)
with open(out_file, 'wb') as ofile:
ofile.write(mydata)
pos += 1
这能解决您的问题吗?
顺便说一句,你可以与
并行完成两次迭代for i, myurl123 in enumerate(ExperimentURLs):
答案 1 :(得分:0)
您的错误只是在编写文件时。并不是说for循环不起作用。您是一次又一次地写入同一个文件。这是一个使用请求的修改版本。您只需在保存时更改文件名即可。
import requests
ExperimentURLs = [
"https://www.google.com",
"https://www.yahoo.com"
]
counter = 0;
for i in ExperimentURLs:
myurl123 = str(i)
r = requests.get(myurl123)
mydata = r.text.encode('utf-8').strip()
fileName = counter
with open("results/"+str(fileName)+".html", 'w') as ofile:
ofile.write(mydata)
counter += 1