如果我是python初学者,请纠正我的错误。
我有一个web服务URL,其中包含一个XML文件:
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"
我知道代码中有一部分缺失,我无法填写缺失的部分。如果有人能帮我,我将不胜感激。
访问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)
由于您提供的Url不起作用,我将使用其他Url。我希望你知道如何使用自定义名称写入文件
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
运行此代码后,状态代码将写入每个文件中。该文件也将命名如下:
- car_JOKES_2018.txt
- dog_JOKES_2018.txt
- fruit_JOKES_2018.txt
我希望这能让您了解如何命名文件和写入文件。
我认为您只想使用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)
我在重试时添加了一些错误处理和更好的行为