2015-03-05 3 views
0

Я пытаюсь создать и записать в файл. У меня есть следующий код:Файл Создать/написать проблему в Python

from urllib2 import urlopen 

def crawler(seed_url): 
    to_crawl = [seed_url] 
    crawled=[] 
    while to_crawl: 
     page = to_crawl.pop() 
     page_source = urlopen(page) 
     s = page_source.read() 
     with open(str(page)+".txt","a+") as f: 
      f.write(s) 
      f.close() 
    return crawled 

if __name__ == "__main__": 
    crawler('http://www.yelp.com/') 

Однако, она возвращает ошибку:

Traceback (most recent call last): 
    File "/Users/adamg/PycharmProjects/NLP-HW1/scrape-test.py", line 29, in <module> 
    crawler('http://www.yelp.com/') 
    File "/Users/adamg/PycharmProjects/NLP-HW1/scrape-test.py", line 14, in crawler 
    with open("./"+str(page)+".txt","a+") as f: 
IOError: [Errno 2] No such file or directory: 'http://www.yelp.com/.txt' 

Я думал, что open(file,"a+") предполагается создать и писать. Что я делаю не так?

+3

«Нет такого файла или каталога:" http://www.yelp.com/.txt»Вы имеете в виду этот каталог не существует? – Mathemats

+0

Ugh, это косая черта, создающая каталог? –

+0

Да, это из-за косой черты. –

ответ

5

Если вы хотите использовать URL-адрес в качестве основы для каталога, вы должны указать код. Таким образом, косые черты (среди других символов) будут преобразованы в последовательности символов, которые не будут мешать файловой системе/оболочке.

Библиотека urllib может помочь с этим.

Так, например:

>>> import urllib 
>>> urllib.quote_plus('http://www.yelp.com/') 
'http%3A%2F%2Fwww.yelp.com%2F' 
Смежные вопросы