Python Создать файл, если он не существует
Если файл не существует, вы можете создать его различными способами. Наиболее типичный метод использует функцию open() и передает различные режимы по мере необходимости. Метод open() возвращает файловый объект и является встроенной функцией Python для открытия файлов. Другие варианты включают использование модуля pathlib или использование модуля os для проверки текущего состояния файла. В этой статье будет подробно рассмотрен как метод open(), так и модуль pathlib.
Каков синтаксис Open()?
Если файл не существует в вашей системе, вы можете использовать метод open() для его создания. Метод open() принимает путь к файлу и режим в качестве входных данных и выводит файловый объект. Синтаксис следующий.
Рассмотрим параметры функции open() более подробно. Путь и имя файла называются файлом. Метод open() использует различные режимы, упомянутые ниже.
- ж: указывает режим записи.
- р: указывает режим чтения.
- а: указывает режим добавления.
- ж+: используется для создания файла, если он еще не существует, а затем используется для его открытия в режиме записи.
- г+: открывает нужный файл в обоих режимах (чтение и запись).
- +: Если файл не существует, сначала он создается, а затем открывается в режиме добавления.
Это множество режимов, доступных при создании нового файла. Если вы добавляете + в код, поместите текст в файл или создайте его, если он еще не существует. Режим w+ усекает файл перед его открытием в режиме записи.
Вы должны выбрать режим +, если вы действительно не хотите, чтобы файл был усечен. Используйте режим w+, если вы хотите обрезать файл при создании нового.
Имейте в виду, что + создает файл, если он еще не существует, и, что более важно, ищет файл до конца. Итак, если вы прочитаете сразу после того, как откроете этот метод, вы ничего не получите.
Еще одна вещь, которую следует отметить, это то, что наша программа/скрипт создает файл в том же каталоге, что и наша программа/скрипт. Файл создается в рабочем каталоге вашей системы, если путь не указан в коде. Это называется созданием файла с относительным путем. За текущим каталогом следует имя файла, это относительный путь.
Давайте рассмотрим несколько способов создания файла в Python, если он еще не существует.
Пример1:
Функция open(), как упоминалось ранее, генерирует объект обработки файлов, который открывает или создает файл по указанному пути. Эта функция имеет несколько различных режимов, которые мы можем использовать.
Режим r используется для открытия файлов в режиме только для чтения. Между тем, режимы «w» и «a» открывают указанный файл в режимах записи и добавления соответственно.
В этом примере мы используем режимы a+ и w+ для создания файла, если он не существует. Мы можем добавить данные в файл, используя режим a+, и обрезать содержимое файла, используя режим w+.
Файл был успешно создан, как показано на прилагаемом снимке экрана.
Пример 2:
Библиотека пути. В этом примере будет использоваться функция Path.touch(). Функцию path.touch() можно использовать для проверки наличия файла по заданному пути. Используя конструктор Path(), мы сначала устанавливаем путь к файлу. Если файл существует по указанному пути, мы устанавливаем для параметра exists_ok значение True в функции path.touch(). После этого мы будем использовать функцию open() для создания файла.
Вот прикреплен скриншот нашего рабочего стола, на котором видно, что файл создан.
Пример 3:
Теперь мы будем использовать функцию os.path.exists() для создания файла. После импорта модуля os мы можем использовать функцию os.path.exists(), чтобы проверить, существует ли путь. Эта функция работает аналогично предыдущему рассмотренному примеру. Если файл существует, функция os.path.exists() вернет значение True; в противном случае это приведет к False.
Здесь программа отобразила сообщение «Файл существует», потому что файл можно найти по указанному пути.
Пример 4:
Для вашего удобства мы опишем блок try и exclude здесь. Исключения можно обрабатывать в Python с помощью блоков try и exclude. Выбрасывается исключение, если мы открываем файл в режиме чтения, а он не существует. Мы можем использовать блок try и exclude, чтобы перехватить это и создать файл после перехвата исключения.
В приведенном ниже коде мы сначала установили местоположение (путь) файла. После этого, используя технику try and block, мы прочитаем файл, если он существует; в противном случае создайте файл как новый файл, если он отсутствует по указанному пути.
Здесь вы можете видеть, что файл существует, как вы можете видеть на прикрепленном скриншоте нашего рабочего стола.
Поскольку файл существовал, программы отображали сообщение «Файл существует», как вы можете видеть ниже.
Заключение:
Функция open() обычно используется для создания файла во всех методах, которые мы рассмотрели. Мы можем использовать различные методы этой функции для создания файла, если он еще не существует. В противном случае мы можем проверить, существует ли путь или нет, используя функции touch() или exists(). Также можно использовать технику блоков try и exc, как показано в последних примерах этой статьи.
описание и примеры функции open и remove
Автор В. Дронов/
24.03.2021
/
Файлы в Python /
Чтобы создать новый файл с помощью Python, используйте метод open() со вторым параметром «x» и первым параметром имени файла.
myfile = open("complete_filepath", "x")
Метод open() с параметрами, показанными в приведенном выше фрагменте кода, создает пустой файл.
Пример 1: с помощью open()
В следующем примере мы создадим новый файл с именем sample.txt.
#open file f = open("sample.txt", "x") #close file f.close
В текущем рабочем каталоге будет создан новый файл. Вы также можете указать полный путь к файлу, если хотите, чтобы ваш файл создавался по абсолютному пути на компьютере.
Пример 2: создание с тем же именем, что и у существующего файла
В следующем примере мы попытаемся создать новый файл sample.
f = open("sample.txt", "x") f.close
Вы получите FileExistsError с аналогичной трассировкой стека, как показано ниже.
Traceback (most recent call last): File "example.py", line 1, in <module> f = open("sample.txt", "x") FileExistsError: [Errno 17] File exists: 'sample.txt'
Чтобы удалить с помощью Python, вызовите метод remove() библиотеки os, указав путь к файлу в качестве аргумента.
Далее мы узнаем, как удалить файл, и различные скрипты, с которыми мы можем столкнуться при удалении файла, например, отсутствие файла и т.д.
Синтаксис remove()
Ниже приводится синтаксис функции remove():
os.remove('filepath')
Если файл присутствует, команда remove() удаляет файл. Но, если файл отсутствует, функция вызывает FileNotFoundError.
Итак, если вы не знаете, присутствует ли файл или нет, и не хотите, чтобы в некоторых случаях возникала ошибка FileNotFoundError, вы можете сначала проверить, присутствует ли файл, и продолжить процесс удаления файла.
Пример удаления файла
Ниже приведен пример удаления файла с именем data.txt, находящегося в том же месте, что и программа.
import os os.remove('data.txt') print('The file is removed.')
Если ваш файл находится в другом месте, кроме вашего текущего каталога, укажите полный путь (абсолютный путь).
import os os.remove('C:\workspace\python\data.txt') print('The file is removed.')
Пример 2: как удалить файл, которого нет
Если файл, указанный по указанному пути, отсутствует, вы получите ошибку FileNotFoundError.
import os os.remove('C:\workspace\python\aslkdjfa.txt') print('The file is removed.')
Вывод:
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'aslkdjfa.txt'
This div height required for enabling the sticky sidebar
linux — open() в Python не создает файл, если он не существует
Задавать вопрос
спросил
Изменено 2 года назад
Просмотрено 1,3 млн раз
Каков наилучший способ открыть файл для чтения/записи, если он существует, а если нет, то создать его и открыть для чтения/записи? Из того, что я читал, file = open('myfile. dat', 'rw')
должен сделать это, верно?
У меня это не работает (Python 2.6.2), и мне интересно, проблема ли это в версии, или она не должна работать так, или что-то в этом роде.
Суть в том, что мне просто нужно решение проблемы. Мне любопытны другие вещи, но все, что мне нужно, это хороший способ сделать вступительную часть.
Вложенный каталог был доступен для записи пользователем и группой, а не другим (я работаю в системе Linux… так что разрешения 775 другими словами), и точная ошибка была:
IOError: нет такого файла или каталога.
- python
- linux
- файл-io
- файл-разрешения
Вы должны использовать open
с режимом w+
:
file = open('myfile.dat', 'w+')11
Преимущество следующего подхода в том, что файл try-finally
, но намного короче.
с open("file.dat","a+") как f: е. написать (...) ...
a+ Открывает файл как для добавления, так и для чтения. Указатель файла в конце файла, если файл существует. Файл открывается в режим добавления. Если файл не существует, он создает новый файл для чтение и запись. -Режимы файла Python
Метод seek() устанавливает текущую позицию файла.
f.seek(pos [ (0|1|2)]) pos .. положение указателя r/w [] .. необязательно () .. один из -> 0 .. абсолютная позиция 1 .. относительное положение к текущему 2 .. относительное положение от конца
8Допускаются только символы «rwab+»; должно быть ровно одно из «rwa» — см. вопрос о переполнении стека , сведения о режимах файлов Python .
''' w режим записи р режим чтения режим добавления w+ создать файл, если он не существует, и открыть его в режиме записи r+ открыт для чтения и записи. Не создает файл. + создать файл, если он не существует, и открыть его в режиме добавления '''
пример:
имя_файла = 'мой_файл.txt' f = open(file_name, 'w+') # открыть файл в режиме записи f.write('правила Python') е.закрыть()
[К сведению, я использую Python версии 3.6.2]
1Рекомендуется использовать следующее:
import os writepath = 'некоторые/путь/к/файлу.txt' режим = 'a', если os.path.exists (путь записи), иначе 'w' с открытым (путь записи, режим) как f: f.write('Привет, мир!\n')2
Начиная с python 3.4, вы должны использовать pathlib
для «прикосновения» к файлам.
Это гораздо более элегантное решение, чем предложенное в этой теме.
из пути импорта pathlib имя_файла = Путь('myfile.txt') filename.touch(exist_ok=True) # создаст файл, если он существует ничего не сделает файл = открыть (имя файла)
То же самое с каталогами:
filename. mkdir(parents=True, exists_ok=True)6
Изменить «rw» на «w+»
Или использовать «a+» для добавления (без удаления существующего содержимого)
0>>> импорт ОС >>> если os.path.exists("myfile.dat"): ... f = файл("myfile.dat", "r+") ... еще: ... f = файл ("myfile.dat", "w")
r+ означает чтение/запись
3 Для Python 3+ я сделаю:import os os.makedirs('путь/к/каталогу', exists_ok=True) с open('path/to/the/directory/filename', 'w') как f: е. написать (...)
Итак, проблема в том, что с открытым
не может создать файл до того, как целевой каталог существует. Нам нужно его создать и тогда достаточно w
режима в данном случае.
Использование:
импорт ОС f_loc = r"C:\Users\Russell\Desktop\myfile.dat" # Создать файл, если он не существует если не os.path. exists(f_loc): открыть (f_loc, 'w'). закрыть () # Открыть файл для добавления и чтения с open(f_loc, 'a+') как f: # Делай вещи
Примечание. Файлы должны быть закрыты после того, как вы их открыли, и контекстный менеджер with позволяет Python позаботиться об этом за вас.
Мой ответ:
file_path = 'myfile.dat' пытаться: fp = открыть (путь_к_файлу) кроме IOError: # Если не существует, создайте файл fp = открыть (путь_к_файлу, 'w+')
open('myfile.dat', 'a')
у меня работает, просто отлично.
в py3k ваш код вызывает ValueError
:
>>> open('myfile.dat', 'rw') Traceback (последний последний вызов): Файл "", строка 1, в открыть('мой файл.dat', 'RW') ValueError: должен иметь ровно один из режимов чтения/записи/добавления
в python-2.6 вызывает IOError
.
Думаю, это r+
, а не rw
. Я только начинающий, и это то, что я видел в документации.
Что вы хотите сделать с файлом? Только запись на него или и чтение и запись?
'w'
, 'a'
разрешает запись и создает файл, если он не существует.
Если вам нужно прочитать файл, файл должен существовать до его открытия. Вы можете проверить его существование перед открытием или использовать try/except.
2Поместите w+ для записи файла, усечения, если он существует, r+ для чтения файла, создания его, если он не существует, но не записи (и возврата null) или + для создания нового файла или добавления к существующему.
Если вы хотите открыть его для чтения и записи, я предполагаю, что вы не хотите обрезать его при открытии и хотите иметь возможность читать файл сразу после его открытия. Итак, это решение, которое я использую:
file = open('myfile.dat', 'a+') файл.искать(0, 0)
Итак, Вы хотите записать данные в файл, но только если он еще не существует?
Эту проблему легко решить, используя малоизвестный режим x для open() вместо обычного режима w. Например:
>>> с open('somefile', 'wt') как f: ... f.write('Привет\n') ... >>> с open('somefile', 'xt') как f: ... f.write('Привет\n') ... Traceback (последний последний вызов): Файл "", строка 1, в FileExistsError: [Errno 17] Файл существует: 'somefile' >>>
Если файл находится в двоичном режиме, используйте режим xb вместо xt.
0импорт ОС, платформа os.chdir('c:\\Users\\MS\\Desktop') пытаться : файл = открыть («Изучай Python.txt», «а») print('этот файл существует') кроме: print('этот файл не существует') file.write('\n''Привет, Ашок') fhead = open('Изучай Python.txt') для строки в fhead: слова = строка.split() печать (слова)
python — создать файл, если он не существует
спросил
Изменено 4 месяца назад
Просмотрено 346 тысяч раз
Я пытаюсь открыть файл, и если файл не существует, мне нужно его создать и открыть для записи. У меня пока так:
#открыть файл для чтения fn = input("Введите файл для открытия: ") fh = открыть (fn, 'r') # если файл не существует, создаем его если (!фх) fh = открытый ( fh, "w")
Сообщение об ошибке говорит о наличии проблемы в строке if(!fh)
. Могу ли я использовать , существующий
, как в Perl?
- питон
- создать файл
Для пользователей
Linux .Если вам не нужна атомарность, вы можете использовать модуль os :
import os если нет os.path.exists('/tmp/test'): os.mknod('/tmp/тест')macOS и пользователей Windows .
В macOS для использования os.mknod()
вам нужны права root.
В Windows нет метода os.mknod()
.
В качестве альтернативы вы можете использовать open()
вместо os. mknod()
import os если нет os.path.exists('/tmp/test'): с open('/tmp/test', 'w'): пройти7
Вы можете добиться желаемого поведения с помощью
file_name = 'my_file.txt' f = open(file_name, 'a+') # открыть файл в режиме добавления f.write('правила Python') е.закрыть()
Вот некоторые допустимые параметры для второго параметра mode
in open()
:
""" w режим записи р режим чтения режим добавления w+ создать файл, если он не существует, и открыть его в режиме (перезаписывания) [он перезаписывает файл, если он уже существует] r+ открыть существующий файл в режиме чтения+записи + создать файл, если он не существует, и открыть его в режиме добавления """3
Ну, во-первых, в Python нет !
, это будет , а не
. Но открыть
тоже не будет молчать — будет выброшено исключение. И блоки должны иметь правильный отступ — Python использует пробелы для обозначения содержания блока.
Получаем:
fn = input('Введите имя файла: ') пытаться: файл = открыть (fn, 'r') кроме IOError: файл = открыть (fn, 'w')1
Вот быстрый двухстрочный код, который я использую для быстрого создания файла, если он не существует.
, если не os.path.exists(имя файла): открыть (имя файла, 'w'). закрыть ()3
Использование input()
подразумевает Python 3, последние версии Python 3 сделали исключение IOError
устаревшим (теперь это псевдоним для OSError
). Итак, если вы используете Python 3.3 или более позднюю версию:
fn = input('Введите имя файла:') пытаться: файл = открыть (fn, 'r') кроме FileNotFoundError: файл = открыть (fn, 'w')
Думаю должно работать:
#открыть файл для чтения fn = input("Введите файл для открытия: ") пытаться: fh = открыть (fn, 'r') кроме: # если файл не существует, создаем его fh = открыть (fn, 'ш')
Кроме того, вы неправильно написали fh = open(fh, "w")
, когда файл, который вы хотели открыть, был fn
Имейте в виду, каждый раз, когда файл открывается этим методом, старые данные в файле уничтожаются независимо от 'w+'
или только 'w'
.
с open("file.txt", 'w+') как f: f.write("файл открыт для бизнеса")3
Если вы знаете расположение папки и имя файла — единственная неизвестная вещь,
open(f"{path_to_the_file}/{file_name}", "w+")
, если расположение папки также неизвестно
попробуйте использовать
pathlib.Path.mkdir
Во-первых, позвольте мне упомянуть, что вы, вероятно, не хотите создавать файловый объект, который в конечном итоге может быть открыт для чтения ИЛИ записи, в зависимости от невоспроизводимого условия. Вам нужно знать, какие методы можно использовать, чтение или запись, что зависит от того, что вы хотите делать с файловым объектом.
Тем не менее, вы можете сделать это, как предложил @That One Random Scrub, используя try: …except:. На самом деле это предлагаемый путь, согласно девизу питона «Легче попросить прощения, чем разрешения».
Но вы также можете легко проверить наличие:
import os # открыть файл для чтения fn = input("Введите файл для открытия: ") если os. path.exists(fn): fh = открыть (fn, "r") еще: fh = открыть (fn, "ш")2
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя адрес электронной почты и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.