对于循环isn';t在python 3中工作

对于循环isn';t在python 3中工作,python,python-3.x,loops,for-loop,Python,Python 3.x,Loops,For Loop,我试图将一个文件从一个URL保存到我计算机上的一个文件夹中,但我的列表中有732个URL(保存时,会提供实验数据)。我试图在所有这些URL上运行一个for循环,将每个数据集保存到自己的文件中。这就是我现在正在做的: for i in ExperimentURLs: myurl123 = str(i) myreq = urllib.request.urlopen(myurl123) mydata = myreq.read() with open('/User

我试图将一个文件从一个URL保存到我计算机上的一个文件夹中,但我的列表中有732个URL(保存时,会提供实验数据)。我试图在所有这些URL上运行一个
for循环
,将每个数据集保存到自己的文件中。这就是我现在正在做的:

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)

experimentURL
是我的URL列表,但我不知道如何处理
for循环
以将每个数据集保存到新文件中。目前,这段代码只将单个实验的数据写入一个文件并停止。如果我尝试将其保存到不同的文件名,它会获取不同实验的数据并将其保存到文件中。帮助?

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

您可能需要附加到文件而不是编写,是的,这很有效,非常感谢!这两次并行迭代意味着什么?新的
for
语句同时处理两个迭代器(
i
myurl123
)。我想知道for循环是否有效,那么我现在是否正试图将所有这些.txt文件放入单独的数据帧中?目前正在使用此代码:randomdf=pd.read\u csv(“/Users/lauren/Desktop/IDData/file0”,sep='\t',header=None)是的,单个DFs应该和单个文本文件一样工作。