Python: писать файл в каталог не существует

Как использовать with open() as f: ... для записи файла в директории, которая не существует.

Например:

 with open('/Users/bill/output/output-text.txt', 'w') as file_to_write: file_to_write.write("{}\n".format(result)) 

Допустим, каталог /Users/bill/output/ не существует. Если каталог не существует, просто создайте каталог и напишите там файл.

  • Получить размеры видеофайла
  • Понимание списка Python: список подпунктов без дубликатов
  • Перевод символов с использованием Python (например, команда tr)
  • Базовая программа для преобразования целого числа в римские цифры?
  • / usr / bin / env: python2.6: Нет такой ошибки файла или каталога
  • Различия между webapp и web.py
  • Что вы подразумеваете под управлением hashable в Python?
  • Каков наилучший способ разделить строку на куски фиксированной длины и работать с ними в Python?
  • 3 Solutions collect form web for “Python: писать файл в каталог не существует”

    Сначала вам нужно создать каталог.

    Реализация mkdir -p из этого ответа будет делать именно то, что вы хотите. mkdir -p будет создавать любые родительские каталоги по мере необходимости и молча делать ничего, если он уже существует.

    Здесь я реализовал метод safe_open_w() который вызывает mkdir_p в части каталога пути, прежде чем открывать файл для записи:

     import os, os.path # Taken from https://stackoverflow.com/a/600612/119527 def mkdir_p(path): try: os.makedirs(path) except OSError as exc: # Python >2.5 if exc.errno == errno.EEXIST and os.path.isdir(path): pass else: raise def safe_open_w(path): ''' Open "path" for writing, creating any parent directories as needed. ''' mkdir_p(os.path.dirname(path)) return open(path, 'w') with safe_open_w('/Users/bill/output/output-text.txt') as f: f.write(...) 

    Сделайте либеральное использование модуля os :

     import os if not os.path.isdir('/Users/bill/output'): os.mkdir('/Users/bill/output') with open('/Users/bill/output/output-text.txt', 'w') as file_to_write: file_to_write.write("{}\n".format(result)) 

    Вы можете просто создать путь, который хотите создать файл, используя os.makedirs :

     import os import errno def make_dir(path): try: os.makedirs(path, exist_ok=True) # Python>3.2 except TypeError: try: os.makedirs(path) except OSError as exc: # Python >2.5 if exc.errno == errno.EEXIST and os.path.isdir(path): pass else: raise 

    Источник: это SO-решение

    Python - лучший язык программирования в мире.