在python 3中,循环没有工作

2024-09-25 00:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图将一个文件从一个URL保存到我的计算机上的一个文件夹中,但是我在一个列表中有732个URL(保存时会给出实验数据)。我试图在所有这些url上运行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是我的URL列表,但我不知道如何处理for loop将每个数据集保存到新文件中。目前,这段代码只将一个实验的数据写入一个文件,并停止在那里。如果我试着把它保存到一个不同的文件名,它会获取一个不同的实验数据并将其保存到文件中。救命啊?你知道吗


Tags: 文件数据文件夹loopurl列表for计算机
2条回答

首先,每次通过循环时都需要自动生成一个新的输出文件名。下面我给你一个简单的版本。另外,请注意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):

你的错误只是在写文件的时候。并不是说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

相关问题 更多 >