Не создается файл python
Эта статья посвящена работе с файлами (вводу/выводу) в Python: открытие, чтение, запись, закрытие и другие операции.
Чтение и запись файлов в Python
В Python файлы можно читать или записывать информацию в них с помощью соответствующих режимов.
Пример
Создадим текстовый файл example.txt и сохраним его в рабочей директории.
Следующий код используется для его открытия.
В этом примере f — переменная-указатель на файл example.txt .
Следующий код используется для вывода содержимого файла и информации о нем.
Стоит обратить внимание, что в Windows стандартной кодировкой является cp1252 , а в Linux — utf-08 .
Функция rename()
Функция rename() используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os.
- src = файл, который нужно переименовать
- dest = новое имя файла
Пример
Открытие файла
Закрытие файла
Функция readline()
Функция readline() используется для построчного чтения содержимого файла. Она используется для крупных файлов. С ее помощью можно получать доступ к любой строке в любой момент.
Пример
Создадим файл test.txt с нескольким строками:
Посмотрим, как функция readline() работает в test.txt .
Обратите внимание, как в последнем случае строки отделены друг от друга.
Переименование файлов в Python
Функция write()
Функция write() используется для записи в файлы Python, открытые в режиме записи.
Если пытаться открыть файл, которого не существует, в этом режиме, тогда будет создан новый.
Синтаксис
Пример
Предположим, файла xyz.txt не существует. Он будет создан при попытке открыть его в режиме чтения.
2 ответа 2
Чтобы записать слово в небольшой файл, если оно ещё не записано:
Если родительская директория не существует, то она автоматически не создаётся, чтобы неявно случайно по ошибке целую структуру директорий не создать.
Проверка на уникальность не эффективна для больших файлов и может сломаться, если пытаться вызвать эту функцию из нескольких потоков, процессов одновременно. Если необходимо, для увеличения скорости и чтобы добавить некоторую поддержку одновременного доступа, можно использовать встроенную базу данных SQLite:
Для гарантированного параллельного доступа лучше внешнюю базу данных использовать такую как PostgreSQL.
ошибки уже нет но и результата тоже нет. Подскажите как создать file.txt, открыть его, вписать строку, сохранить и закрыть в Python 3.2.2
Спасибо.
Python v.2.7 Как открыть второй 2.txt путь к которому прочитали из первого 1.txt
Привет всем, нуждаюсь в помощи тех, кто с таким сталкивался. Кратко: Прочесть путь к файлу .txt и.
Как из блокнота (txt) открыть данные и занести в таблицу dataGridView, редактировать и снова сохранить в txt
Нужно чтобы при нажатии кнопки открывалось окно выбора текст фаила, и данные из этого фаила.
Как создать файл TXT и непоказывая его на экране записать в него строку.
Как создать файл TXT и непоказывая его на экране записать в него строку.
Как открыть файл xlsx и сохранить в txt?
Написать консольное windows приложение на Visual C++ со следующим функционалом: - на вход.
ошибки уже нет но и результата тоже нет. Подскажите как создать file.txt, открыть его, вписать строку, сохранить и закрыть в Python 3.2.2
- это не код Python, это код командной строки. '> file.txt' - это перенаправление стандартного вывода в файл file.txt.
Соответственно, у тебя код test.py должен быть примерно таким:
И запускать этот код из командной строки так в Linux (с правами на выполнение, скрипт в текущей директории):
Я только 2 дня назад начал изучать python, до этого был vb6, может посоветуете хорошую литературу. У меня есть Саммерфилд, подробное руководство python 3 и Лутц 4-е издание.
Спасибо.
Добавлено через 6 минут
и еще не отходя от кассы, как я понял переменных нет есть обьект типа int или str, и на этот объект создается ссылка с именем напр. x. Как вписать в файл значение объекта на который ведет ссылка х
и еще не отходя от кассы, как я понял переменных нет есть обьект типа int или str, и на этот объект создается ссылка с именем напр. x. Как вписать в файл значение объекта на который ведет ссылка х
а чем это в твоем понимании отличается от понятия «переменной»?
with управляет контекстом создаваемого файлового объекта f, избавляя нас от необходимости вручную закрывать файл. Метод write принимает строку. Для того, чтобы привести какое-то значение к строковому виду, используются функции str, repr и метод format класса str
ну и что ты хотел этим сказать? Скажи хоть, что ты понимаешь под «переменной» (код на Basic'е ничего не говорит)
извини если сказал что то не то, я вычитал эту терминологию в книге Саммерфилда, мне показалось что это отличаеться от того понятия переменной к которой я привык. Возможно автору книги о бейсике слова о переменных сложились по другому поэтому у меня сложилось иное понятие о переменных. Как то так. Я новичек и вообще не опытный програмист, поэтому звиняйте если что.
приведенный код показывает разницу между переменными в бейсике и ссылками на объекты в пайтоне.
В бейсике такие маневры приведут к выдаче ошибки о несовпадении типов переменных.
Добавлено через 41 минуту
Дополнение.
Что получаеться:
В пайтоне созданы объекты типа, изменить которые нельзя можно только создать новый объект и связать существующую ссылку с новым объектом, старый объект будет удален если на него не ведут никакие ссылки. Ссылками можно манипулировать на свое усмотрение.
В бейсике создаются ячейки типа в которые записываются значения которые можно менять, а это переменные в чистом виде.
Вот она разница.
Поправьте меня если я не прав.
В пайтоне созданы объекты типа, изменить которые нельзя можно только создать новый объект и связать существующую ссылку с новым объектом, старый объект будет удален если на него не ведут никакие ссылки. Ссылками можно манипулировать на свое усмотрение.
В бейсике создаются ячейки типа в которые записываются значения которые можно менять, а это переменные в чистом виде.
Я не могу с тобой спорить, потому что я привожу тебе реальный пример, а ты просто все отрицаешь без доказательств, здесь нужен третий авторитетный судья который скажет, ребята давайте жить дружно потому что на самом деле ситуация с ссылками и объектами в пайтоне следующая. и на этом поставим точку. ОК?
Бинарные файлы
В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.
Они хранятся в формате .bin .
Любую операцию с файлом можно разбить на три крупных этапа:
- Открытие файла
- Выполнение операции (запись, чтение)
- Закрытие файла
Файлы Python
Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename).
В Python существует два типа файлов:
Инструкция with
Еще один подход — использовать инструкцию with , которая упрощает обработку исключений с помощью инкапсуляции начальных операций, а также задач по закрытию и очистке.
В таком случае инструкция close не нужна, потому что with автоматически закроет файл.
Вот как это реализовать в коде.
Текстовые файлы
Это файлы с человекочитаемым содержимым. В них хранятся последовательности символов, которые понимает человек. Блокнот и другие стандартные редакторы умеют читать и редактировать этот тип файлов.
Текст может храниться в двух форматах: ( .txt ) — простой текст и ( .rtf ) — «формат обогащенного текста».
Метод close()
После открытия файла в Python его нужно закрыть. Таким образом освобождаются ресурсы и убирается мусор. Python автоматически закрывает файл, когда объект присваивается другому файлу.
Существуют следующие способы:
Способ №1
Проще всего после открытия файла закрыть его, используя метод close() .
После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.
Способ №2
Также можно написать try/finally , которое гарантирует, что если после открытия файла операции с ним приводят к исключениям, он закроется автоматически.
Без него программа завершается некорректно.
Вот как сделать это исключение:
Файл нужно открыть до инструкции try , потому что если инструкция open сама по себе вызовет ошибку, то файл не будет открываться для последующего закрытия.
Этот метод гарантирует, что если операции над файлом вызовут исключения, то он закроется до того как программа остановится.
Способ №3
Функция read()
Функция read() используется для чтения содержимого файла после открытия его в режиме чтения ( r ).
Синтаксис
- file = объект файла
- size = количество символов, которые нужно прочитать. Если не указать, то файл прочитается целиком.
Пример
Текущая позиция в файлах Python
В Python возможно узнать текущую позицию в файле с помощью функции tell() . Таким же образом можно изменить текущую позицию командой seek() .
Я создаю приложение Python и не хочу заставлять своих клиентов устанавливать Python и модули. Я также хочу сделать свое приложение закрытым.
Итак, есть ли способ скомпилировать скрипты Python в автономные исполняемые файлы?
можно использовать py2exe как уже ответили и используют на Cython преобразовать ваш ключ .py файлы .pyc , C скомпилированные файлы, например .dll в Windows и .so в linux гораздо сложнее вернуться, чем обычно .pyo и .pyc файлы (а также увеличение производительности!)
можно использовать PyInstaller для упаковки программ Python в качестве автономных исполняемых файлов. Он работает на Windows, Linux и Mac.
установить PyInstaller из PyPI:
перейдите в каталог вашей программы и запустите:
это создаст пакет в подкаталоге с именем dist .
более подробное руководство см. В руководство.
возможно, вы захотите исследовать Nuitka. Он принимает исходный код python и преобразует его в вызовы API C++. Затем он компилируется в исполняемый двоичный файл (ELF на Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python.
вы, вероятно, также получите повышение производительности, если вы его используете. Рекомендуемый.
и третий вариант-это cx_Freeze , который является кросс-платформенным.
Я хотел бы собрать полезную информацию о создании автономных файлов в windows с помощью Python 2.7.
я использовал py2exe и он работает, но у меня были некоторые проблемы.
Он показал некоторые проблемы для создания отдельных файлов в Windows 64 бит: использование bundle_files = 1 с py2exe не работает;
У меня были проблемы с зависимостями, которые вы должны решить, импортируя пакеты в установочный файл;
Я не смог заставить его работать вместе с PyQt..
на мой взгляд, это гораздо лучше потому что:
Я предлагаю создать .например, файл bat со следующими строками (pyinstaller.exe должен быть в пути Windows):
Итак, я думаю, что, по крайней мере, для python 2.7, лучшим и более простым вариантом является PyInstaller.
да, можно скомпилировать скрипты Python в автономный исполняемый файл.
PyInstaller может использоваться для преобразования программ Python в автономные исполняемые файлы в разделе Windows, Linux, Mac OS X, FreeBSD, Солярис и экс. Это один из рекомендуемых преобразователей.
py2exe преобразует скрипты Python только в исполняемый файл в Windows платформа.
на Cython является статическим компилятором как для языка программирования Python, так и для расширенного языка программирования Cython.
вы можете, как py2exe. вы также найдете там информацию для этого в linux
использовать py2exe. используйте ниже настроить файлы:
и pyinstaller для лучшей обратной совместимости, такой как python 2.3-2.7.
на py2exe, у вас должен быть python 2.6
для скриптов Python 3.2 единственным выбором является Cxfreeze. Построить его из источников, иначе он не будет работать.
для python 2.x я предлагаю pyinstaller, поскольку он может упаковать программу python в один исполняемый файл, в отличие от CxFreeze, который выводит также библиотеки.
Я использую bbfreeze и он работает очень хорошо(пока еще есть поддержка python 3).
не совсем упаковка кода python, но теперь также ворчун из Google, которые transpiles код, чтобы пойти. Он не поддерживает api python C, поэтому он может работать не для всех проектов.
используйте Cython для преобразования в c, компиляции и связи с gcc. Другой может быть, сделать основные функции в c (те, которые вы хотите сделать трудными для обратного), скомпилировать их и использовать python boost для импорта скомпилированного кода ( плюс вы получите гораздо более быстрое выполнение кода). затем используйте любой упомянутый инструмент для распространения.
используя pyinstaller, я нашел лучший метод, используя ярлык .ехе, а не делать --onefile . В любом случае, вероятно, есть некоторые файлы данных, и если вы используете приложение на основе сайта, ваша программа также зависит от файлов html, js, css. Нет смысла куда-то переносить все эти файлы.. вместо этого, что если мы переместим Рабочий путь вверх.
сделайте ярлык для exe, переместите его сверху и установите целевые и начальные пути, как указано, чтобы относительные пути папка dist\: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" Можно переименовать ярлык на что угодно, чтобы переименовать в "GTFS-Manager"
Теперь, когда я дважды щелкаю ярлык, это как если бы я python-запустил файл! Я нашел этот подход лучше, чем --onefile одним из:
- в случае onefile есть проблема с a .dll отсутствует для ОС win7, которая нуждается в некоторой предварительной установке и т. д. Зевать. При обычной сборке с несколькими файлами таких проблем нет.
- все файлы, которые использует мой скрипт python (он развертывает торнадо веб-сервер и нужен целый чертов веб-сайт стоит файлов, чтобы быть там!) не нужно никуда перемещаться: я просто создаю ярлык сверху.
- Я действительно могу использовать эту же папку в ubuntu (запустить python3 myfile.py) и windows (дважды щелкните ярлык).
- мне не нужно беспокоиться о слишком сложном взломе .файл спецификаций для включения файлов данных и т. д.
о, не забудьте удалить папку сборки после построения, будет экономьте на размере.
Особенно интересует описание работы второго способа. Функция open создаст файловый объект, но т. к. он никуда не сохранен, интерпретатор его удалит? Т. е. тогда файл будет сразу доступен для чтения/редактирования/удаления, но уже другой команде/программе?
Python 3.4, Windows 8.1
Оценить 2 комментария
я бы предложил такой вариант
open(..).close()
и файл закрываться, и в одну строчку и без грамозких конструкций.
что касается ошибок - то все варианты в этом плане одинаковы.
Это так просто, но почему-то абсолютно не думал об объединении этих двух операций. То, что я искал. Большое спасибо!
По поводу предположения. Попробовал вот так:
И во время выполнения блокнотом открыл файл и записал 'test'. По окончании работы скрипта в файле остается 'test'. Причем, файл создался, но данные, введенные перед sleep(15) не сохранены в файле. Если файл не открывать в течение 15 секунд, то он будет содержать 'test_1test_2'.
Python 3.4, Ubuntu 14.04
Ну то что файлы можно открыть из разных процессов еще не означает, что если писать в него из разных процессов, то все будет хорошо :)
>Причем, файл создался, но данные, введенные перед sleep(15) не >сохранены в файле.
Ну это как раз таки все нормально - есть такое понятие как буфферезированый ввод/вывод (см. flush)
То что если успеть переписать файл после открытия, нужно точно смотреть, что до как, но скорее всего тут проблема во внутренних указателях файла.
Контексты больше соответствуют zen и к томуже гарантируют закрытость файла при возникновении ошибки. (это первый способ)
А открытый вторым способом файл разве не закрывается после выполнения команды open()?
и во время его выполнения запустил:
В файле '1.txt' появилось 'hacked'. Т. е. файловый объект был сразу же удален, после создания файла файл закрыт?
yttrium, а как вы создаете пустые файлы?
Второй способ не закрывает файл. Он закроется после завершения процесса.
Не понимаю с чего вы решили что файл был сразу удален.
@yttrium я конечно не настоящий сварщик (точнее питонист), но мне кажется ТС намикает на то, что объект который вернул open() соберется GC в результате чего файл реально закроется. В таком простом случае это будет работать.
@stkrp в твоем эксперименте есть одно не правильное предположение, что файлы открываются эксклюзивным образом. Насколько я помню в винде для этого нужно выставлять кокой-то флаг в FileOpen, чего питон скорее всего не делает. По этому вывод не верен.
Другая функция на правой кнопке мыши работает без проблем (пробовал менять местами функции на ЛКМ и ПКМ, не помогло) Также в этом скрипте имеются функции которые создают и записывают файл без проблем, кусок функции к примеру:
Пробовал также сменить директорию, создавал файл вручную (посмотреть будет ли записываться), давал права 777 на папку, ничего не помогло, подскажите в чем проблема?
Что значит «не записывает»? Ошибку в консоли пишет или просто ничего не делает? У меня записывает, кстати.
просто ничего не делает, незнаю как посмотреть в консоли, это два скрипта на питоне и один на Lua для mvp player,если какая-то ошибка, скрипт просто не работотал бы вцелом
При нажатии кнопки в tkinter возникающая ошибка обычно просто игнорируется. Я не знаю, что как вы там запускаете, но вам нужно как-то запустить скрипт в консоли и почитать там ошибки. Впрочем, в любом случае у меня всё отлично пишется. Может, у вас файл ~/saved_words вообще не существует?
ну, он действительно не существует, но я думал параметр "а" должен создавать файл если его не существует, но я пробывал создавать файл вручную и давать права 777, не помогло
Так ещё до параметра a вы же сперва читаете файл, там где readlines. Естественно, несуществующий файл не прочитается. А если и с созданным файлом не работает, то ищите консоль и читайте ошибку
Метод open()
В Python есть встроенная функция open() . С ее помощью можно открыть любой файл на компьютере. Технически Python создает на его основе объект.
- file_name = имя открываемого файла
- access_mode = режим открытия файла. Он может быть: для чтения, записи и т. д. По умолчанию используется режим чтения ( r ), если другое не указано. Далее полный список режимов открытия файла
Читайте также: