FileNotFoundError:[Errno 2]:带有open()的变量文件名

时间:2018-04-13 18:30:24

标签: xml python-3.x web-scraping io

我正在开发一个 webscraper in Python ,它从xml文件中获取名称和downloadlink。首先,它连接了date,hof和az的名称。然后它应该下载ziplink(www.file.io/xyzfile.zip)后面的文件,并在同一目录下的连接名称下安全。

除了它不会取我的连锁名称。因此,一般性问题:我需要提供哪些确切信息作为函数的参数?使用type()我确保我提供了一个字符串,但它不会接受它。

import requests
from bs4 import BeautifulSoup
xml = requests.get('https://www.rechtsprechung-im-internet.de/rii-toc.xml')
soup = BeautifulSoup(xml.text, 'xml')

for item in soup.find_all('item'):
    ziplink=str(item.link.text) 
    datum=str(item.find('entsch-datum').text)
    az=str(item.aktenzeichen.text)
    hof=str(item.gericht.text)
    name=datum+'-'+hof+'-'+az
    print(type(name))
    r=requests.get(ziplink, allow_redirects=True)
    with open('%s.zip' % name,'wb') as f:
        f.write(r.content)
    print(name)

但遗憾的是我收到以下错误:

Traceback (most recent call last):
  File "simple_script.py", line 26, in <module>
    with open('%s.zip' % name,'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '20100114-BGH 9. Zivilsenat-IX ZB 72/08.zip'

使用print(type())我确保提供一个字符串作为名称参数。因为当我使用name = 'test.zip'测试代码时,它运行正常。但理想情况下,我想动态命名文件。

这是我在Stackoverflow上的第一篇文章,我很想得到一些反馈。非常感谢!

干杯,贾斯珀

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用open函数中的“wb +”权限?

with open('%s.zip' % name,'wb+') as f:
    f.write(r.content)

+表示如果找不到它,它应该创建文件。