- Операции с файлами в Python
- Работа с файлами
- Зачем нужны файловые операции в Python?
- 1. Открытие файла с помощью функции open()
- 2. Чтение и запись файлов
- 3. Копирование файлов с помощью метода shutil()
- 4. Удаление файлов с помощью метода shutil.os.remove()
- 5. Закрытие открытого файла с помощью метода close()
- 6. Ошибка FileNotFoundError
- Как заставить скрипты автоматически удалять в конце выполнения?
- 5 ответов
- Ещё вопросы
Операции с файлами в Python
В этом руководстве мы будем работать с различными файловыми операциями в Python. Рассмотрим, как использовать Python для чтения файла, записи в файл, удаления файлов и многое другое.
Работа с файлами
Теперь введем данные с помощью файла. Это означает, что будем читать и записывать в файлы. Для этого нам нужно выполнить несколько шагов:
- Открыть файл.
- Принять ввод из этого файла и записать вывод в этот файл.
- Закрыть файл.
Мы также узнаем некоторые полезные операции, такие как копирование файла и удаление файла.
Зачем нужны файловые операции в Python?
При работе с большими наборами данных в задачах машинного обучения работа с файлами является основной необходимостью. Поскольку Python является наиболее часто используемым языком для науки о данных, вам необходимо хорошо разбираться в различных файловых операциях.
Итак, давайте рассмотрим здесь некоторые файловые операции Python.
1. Открытие файла с помощью функции open()
Первый шаг к работе с файлами в Python – научиться открывать файл. Вы можете открывать файлы с помощью метода open().
Функция open() в Python принимает два аргумента. Первый – это имя файла с полным путем, а второй – режим открытия файла.
Ниже перечислены некоторые из распространенных режимов чтения файлов:
- ‘r’ – этот режим указывает, что файл будет открыт только для чтения;
- ‘w’ – этот режим указывает, что файл будет открыт только для записи. Если файл, содержащий это имя, не существует, он создаст новый;
- ‘a’ – этот режим указывает, что вывод этой программы будет добавлен к предыдущему выводу этого файла;
- ‘r +’ – этот режим указывает, что файл будет открыт как для чтения, так и для записи.
Кроме того, для операционной системы Windows вы можете добавить «b» для доступа к файлу в двоичном формате. Это связано с тем, что Windows различает двоичный текстовый файл и обычный текстовый файл.
Предположим, мы помещаем текстовый файл с именем file.txt в тот же каталог, где находится наш код. Теперь мы хотим открыть этот файл.
Однако функция open (filename, mode) возвращает файловый объект. С этим файловым объектом вы можете продолжить свою дальнейшую работу.
#directory: /home/imtiaz/code.py text_file = open('file.txt','r') #Another method using full location text_file2 = open('/home/imtiaz/file.txt','r') print('First Method') print(text_file) print('Second Method') print(text_file2)
Результатом следующего кода будет:
================== RESTART: /home/imtiaz/code.py ================== First Method Second Method >>>
2. Чтение и запись файлов
Python предлагает различные методы для чтения и записи файлов, где каждая функция ведет себя по-разному. Следует отметить один важный момент – режим работы с файлами. Чтобы прочитать файл, вам нужно открыть файл в режиме чтения или записи. В то время, как для записи в файл на Python вам нужно, чтобы файл был открыт в режиме записи.
Вот некоторые функции Python, которые позволяют читать и записывать файлы:
- read() – эта функция читает весь файл и возвращает строку;
- readline() – эта функция считывает строки из этого файла и возвращает их в виде строки. Он выбирает строку n, если она вызывается n-й раз.
- readlines() – эта функция возвращает список, в котором каждый элемент представляет собой одну строку этого файла.
- readlines() – эта функция возвращает список, в котором каждый элемент представляет собой одну строку этого файла.
- write() – эта функция записывает фиксированную последовательность символов в файл.
- Writelines() – эта функция записывает список строк.
- append() – эта функция добавляет строку в файл вместо перезаписи файла.
Возьмем пример файла «abc.txt» и прочитаем отдельные строки из файла с помощью цикла for:
#open the file text_file = open('/Users/pankaj/abc.txt','r') #get the list of line line_list = text_file.readlines(); #for each line from the list, print the line for line in line_list: print(line) text_file.close() #don't forget to close the file
Теперь, когда мы знаем, как читать файл в Python, давайте продвинемся вперед и выполним здесь операцию записи с помощью функции Writelines().
#open the file text_file = open('/Users/pankaj/file.txt','w') #initialize an empty list word_list= [] #iterate 4 times for i in range (1, 5): print("Please enter data: ") line = input() #take input word_list.append(line) #append to the list text_file.writelines(word_list) #write 4 words to the file text_file.close() #don’t forget to close the file
3. Копирование файлов с помощью метода shutil()
Мы можем использовать модуль shutil для копирования файлов в Python. Эта утилита позволяет нам выполнять операции копирования и перемещения для разных файлов. Давайте поработаем над этим на примере:
import shutil shutil.copy2('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copy2.txt') #another way to copy file shutil.copyfile('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copyfile.txt') print("File Copy Done")
4. Удаление файлов с помощью метода shutil.os.remove()
Модуль Python shutil предлагает метод remove() для удаления файлов из файловой системы. Давайте посмотрим, как мы можем выполнить операцию удаления в Python:
import shutil import os #two ways to delete file shutil.os.remove('/Users/pankaj/abc_copy2.txt') os.remove('/Users/pankaj/abc_copy2.txt')
5. Закрытие открытого файла с помощью метода close()
Когда вы открываете файл в Python, чрезвычайно важно закрыть файл после внесения изменений. Это сохраняет любые изменения, которые вы сделали ранее, удаляет файл из памяти и предотвращает дальнейшее чтение или запись в программе.
Синтаксис для закрытия открытого файла в Python:
Если мы продолжим наши предыдущие примеры, где мы читаем файлы, вот как вы закроете файл:
text_file = open('/Users/pankaj/abc.txt','r') # some file operations here text_file.close()
Кроме того, вы можете избежать закрытия файлов вручную, если используете блок with. Как только блок with выполняется, файлы закрываются и становятся недоступными для чтения и записи.
6. Ошибка FileNotFoundError
Ошибка FileNotFoundError часто возникает при работе с файлами в Python. Этого можно легко избежать, указав полные пути к файлам при создании файлового объекта.
File "/Users/pankaj/Desktop/string1.py", line 2, in text_file = open('/Users/pankaj/Desktop/abc.txt','r') FileNotFoundError: [Errno 2] No such file or directory: '/Users/pankaj/Desktop/abc.txt'
Чтобы исправить FileNotFoundError, вам просто нужно убедиться, что путь, который вы указали для метода открытия файла, правильный.
Как заставить скрипты автоматически удалять в конце выполнения?
Возможно ли сделать python script, который удалит файл .py в конце его выполнения (само удаление) в Windows?
Чтобы обновить скрипт с использованием сетевого сокета, мне нужно удалить оригинальный скрипт после получения обновленного
5 ответов
Я не уверен, что удалить файл, пока он в памяти будет хорошей идеей. Попробуйте запустить пакетный файл из script, который закрывает процесс script, а затем удаляет файл script.
Может существовать собственный метод для самоуничтожения script, но я не знаю об этом.
EDIT: Вот простой пример того, как вы могли бы выполнить это, используя описанный мной метод:
# C:\test.py import os os.startfile(r"C:\sampleBatch.bat")
# C:\sampleBatch.bat TASKKILL /IM "process name" #For me, this was "ipy64.exe" because I use IronPython. DEL "C:\test.py"
Вам даже не нужно убивать процесс для удаления файла, но это безопаснее. Надеюсь, это поможет.
Пакетный файл должен быть в состоянии уничтожить файл после закрытия процесса. Для этого используйте команду DEL «scriptpathhere» в командном файле. Я поставлю небольшой фрагмент через секунду.
Пакетный файл должен быть в состоянии удалить себя, если это последнее, что он делает. Но вы получите ошибку »Пакетный файл не может быть найден« в этом случае в конце.
Таким образом, ваша программа зависит от ОС.
from os import remove from sys import argv remove(argv[0])
Бонусные баллы: При анализе аргументов самый первый аргумент, который вы получаете в sys.argv, равен » path-to-filename/filename.py«
Ответ Neomind, похоже, делает трюк. Но если удаление файла, когда оно в памяти беспокоит вас, и вы ищете чистое решение python, вы можете использовать подпроцесс для создания нового процесса с явной целью удаления исходного файла script. Что-то вроде этого должно работать:
import sys, subprocess subprocess.Popen("python -c \"import os, time; time.sleep(1); os.remove('<>');\"".format(sys.argv[0])) sys.exit(0)
Вам, вероятно, не понадобится тайм-аут, но я добавил его только для того, чтобы убедиться, что процесс из исходного script был предоставлен достаточно времени для закрытия.
Да, вы могли бы использовать следующее:
import os import sys import subprocess # execute and remove after run (Your python code) # end of file dir = os.getcwd() os.remove(dir+'\%s' % sys.argv[0])
Этот script может быть изменен, конечно, но, кроме того, это должно работать
Существует довольно простой метод:
import os os.remove("insert the file path")
Если вы столкнулись с проблемами, поместите «r» перед отметкой начала цитаты.
Ещё вопросы
- 0 C ++ скопировать #define в массив символов
- 1 Как получить ButtonDrawable из флажка в API 21?
- 0 Получить объект, который содержит массив других объектов
- 1 gTTS Python Script в фоновом режиме получает tcgetattr (): неподходящий ioctl для устройства
- 0 Используйте Intel OpenCL.dll вместе с установкой NVIDA CUDA
- 1 Как получить GAL из Outlook в Интернете
- 0 Как передать данные о значении в ссылку на действие
- 1 Простой Android запрос https?
- 1 SQLDataReader с пустым чтением после ExecuteReader
- 1 Интернационализация с весны MVC
- 1 Настройка SFML.net 2.1?
- 1 Невозможно закрыть закрываемые вкладки и активировать вкладки
- 1 Аутентификация веб-приложения для REST API Backend
- 1 Обрабатывать ложные аргументы
- 0 Войдите в систему с помощью JWT (веб-токена Json) и приложения Devise in Rails
- 0 Показать окно сообщения о блокировке
- 1 Самый быстрый способ найти кандидатов первичного ключа в файле CSV?
- 1 Подсчет уникальных значений по группам в двух столбцах
- 1 Не удается импортировать установленный пакет в среде Python3 ноутбука Jupyter
- 0 JavaScript внутри PHP не работает
- 0 PHP пока петли в то время как петли не работают
- 1 Отключить асинхронную загрузку Google Analytics
- 0 Как эффективно проверить хранимую процедуру на наличие в PHP
- 0 невозможно загрузить динамическую библиотеку
- 0 Как мне заполнить мою форму из моих данных, сохраненных в localalstorage
- 1 Как добавить JLabel к этому?
- 1 Получение автоматически сгенерированного идентификатора при вставке в roomDatabase
- 1 Угловая труба: невозможно заменить / n
- 1 Могу ли я отформатировать тип данных TIME на JavaDB?
- 0 Как внедрить контроллер как зависимость при использовании нотации «Контроллер как»?
- 1 Добавить счетчик на панель инструментов только для определенного фрагмента
- 0 Получение и перемещение последней записи в каждой группе
- 0 Как создать оператор обновления с несколькими предложениями набора?
- 1 Как кодировать кнопку с различными эффектами при многократном нажатии
- 0 Mysql: Как создать столбец, который представляет собой разницу между столбцом в таблице и другим столбцом в представлении
- 1 Как нормализовать цвета, приобретая один цвет?
- 0 Как получить данные из двух таблиц со строками в виде столбцов? (динамический пивот в MySQL)
- 0 Синглтон без конструктора копирования
- 0 Какой быстрый способ добавить новые строки кода в начало и конец всех моих файлов?
- 1 Как остановить службу переднего плана перед вызовом метода startForeground ()?
- 0 Использование языкового класса в контроллере (CodeIgniter)
- 0 jQuery Dialog блокирует горячие клавиши Firefox
- 1 Asp.Net MVC, WebApi и правильный асинхронный подход
- 0 Mustache_Autoloader отсутствует с Composer
- 1 Как исправить «android.enableSeparateAnnotationProcessing является экспериментальным и не поддерживается», который регистрируется как предупреждение?
- 1 Адреса пользовательских значений перечисления по порядку
- 0 Использование среза Javascript внутри углового выражения
- 1 Python — ускорить итерацию панд
- 1 отображать простой список внутренних типов данных
- 1 FindResource не работает в библиотеке пользовательских элементов управления