#python #windows #web-scraping #scrapy #operating-system
Вопрос:
Я пытаюсь создать папку и записать в нее файлы, даже если изначально папки не существует, но я получаю FileNotFoundError: [Errno 2] Нет такого файла или каталога.
Я считаю, что использование режима w должно создавать файл, независимо от того, существует он или нет, а затем записывать в него, но он, похоже, не работает, и я продолжаю получать файлообменник. Я также пытался использовать a или r , но, похоже, ничего не работает.
журнал ошибок:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\fighter\fighters-n.json'
ufcscraper.py:
page = response.url.split("amp;")[0][-1] # a sample of the page url structure is: http://ufcstats.com/statistics/fighters?char=aamp;page=all filename = f'fighters-{page}.json' path = os.getcwd() # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\ufccrawler\spiders' new_path = path.split("\")[0:-2] # ['C:', 'Users', 'Habib', 'Documents', 'Upwork_Projects', 'Stephanie-web-scraping', 'ufccrawler'] new_path = ("\").join(new_path) "\fighter" # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\fighter' completeName = os.path.join(new_path, filename) # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\fighter\fighters-a.json' with open(completeName, 'w ') as f: f.write(json.dumps(results, indent=2)) f.close() self.log(f'Saved file {completeName}')
Комментарии:
1. О чем
fighter
? Существует ли она?2. его не существует, поэтому я использовал режим w , чтобы python мог создать его сам и записать в него файлы.
3. Ждать.
filter
это каталог.w
открывает файл для чтения и записи. Если он не существует, он создаст файл . Но он не может создать каталог, если он не существует в пути.4. Я думаю, что понял это, используя «os.makedirs()» хорошо работает.
5. именно то, что я сделал, проверьте в разделе ответов.
Ответ №1:
page = response.url.split("amp;")[0][-1] # a sample of the page url structure is: http://ufcstats.com/statistics/fighters?char=aamp;page=all filename = f'fighters-{page}.json' path = os.getcwd() # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\ufccrawler\spiders' new_path = path.split("\")[0:-2] # ['C:', 'Users', 'Habib', 'Documents', 'Upwork_Projects', 'Stephanie-web-scraping', 'ufccrawler'] new_path = ("\").join(new_path) "\fighter" # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\fighter' # This fixes the issue for me by checking to see if the directory exist or not and the creates it if it doesn't exist if not os.path.exists(new_path): os.makedirs(new_path) completeName = os.path.join(new_path, filename) # 'C:\Users\Habib\Documents\Upwork_Projects\Stephanie-web-scraping\ufccrawler\fighter\fighters-a.json' with open(completeName, 'w ') as f: f.write(json.dumps(results, indent=2)) f.close() self.log(f'Saved file {completeName}')