如果我是python的初学者,请纠正我的错误。
我有一个包含XML文件的Web服务URL:
http://abc.tch.xyz.edu:000/patientlabtests/id/1345
我有一个值列表,我想将该列表中的每个值附加到URL并为每个值下载文件,并且下载文件的名称应与从列表中附加的值相同。
可以一次下载一个文件,但是列表中有1000个值,并且我试图编写一个带for循环的函数,但被卡住了。
x = [ 1345, 7890, 4729]
for i in x :
url = http://abc.tch.xyz.edu:000/patientlabresults/id/{}.format(i)
response = requests.get(url2)
****** Missing part of the code ********
with open('.xml', 'wb') as file:
file.write(response.content)
file.close()
从URL下载的文件应该类似于
"1345patientlabresults.xml"
"7890patientlabresults.xml"
"4729patientlabresults.xml"
我知道代码的一部分丢失了,我无法填写该部分。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:1)
访问您的Web服务URL似乎不起作用。检查一下。
import requests
x = [ 1345, 7890, 4729]
for i in x :
url2 = "http://abc.tch.xyz.edu:000/patientlabresults/id/"
response = requests.get(url2+str(i)) # i must be converted to a string
注意:当您使用“ with”打开文件时,由于文件将自动关闭,因此您没有关闭文件。
with open(filename, mode) as file:
file.write(data)
由于您提供的网址无效,因此我将使用其他网址。我希望您能了解这个想法,以及如何使用自定义名称写入文件
import requests
categories = ['fruit', 'car', 'dog']
for category in categories :
url = "https://icanhazdadjoke.com/search?term="
response = requests.get(url + category)
file_name = category + "_JOKES_2018" #Files will be saved as fruit_JOKES_2018
r = requests.get(url + category)
data = r.status_code #Storing the status code in 'data' variable
with open(file_name+".txt", 'w+') as f:
f.write(str(data)) # Writing the status code of each url in the file
运行此代码后,状态代码将写入每个文件中。该文件还将被命名为:
我希望这能使您了解如何命名文件以及如何写入文件。
答案 1 :(得分:0)
我认为您只是想使用str.format
来创建路径,因为您(几乎)都使用URL。也许像下面这样
import os.path
x = [ 1345, 7890, 4729]
for i in x:
path = '1345patientlabresults.xml'.format(i)
# ignore this file if we've already got it
if os.path.exists(path):
continue
# try and get the file, throwing an exception on failure
url = 'http://abc.tch.xyz.edu:000/patientlabresults/id/{}'.format(i)
res = requests.get(url)
res.raise_for_status()
# write the successful file out
with open(path, 'w') as fd:
fd.write(res.content)
我在重试中添加了一些错误处理和更好的行为