Python удалить файл перед закрытием

Операции с файлами в Python

В этом руководстве мы будем работать с различными файловыми операциями в Python. Рассмотрим, как использовать Python для чтения файла, записи в файл, удаления файлов и многое другое.

Работа с файлами

Теперь введем данные с помощью файла. Это означает, что будем читать и записывать в файлы. Для этого нам нужно выполнить несколько шагов:

  1. Открыть файл.
  2. Принять ввод из этого файла и записать вывод в этот файл.
  3. Закрыть файл.

Мы также узнаем некоторые полезные операции, такие как копирование файла и удаление файла.

Зачем нужны файловые операции в Python?

При работе с большими наборами данных в задачах машинного обучения работа с файлами является основной необходимостью. Поскольку Python является наиболее часто используемым языком для науки о данных, вам необходимо хорошо разбираться в различных файловых операциях.

Итак, давайте рассмотрим здесь некоторые файловые операции Python.

1. Открытие файла с помощью функции open()

Первый шаг к работе с файлами в Python – научиться открывать файл. Вы можете открывать файлы с помощью метода open().

Функция open() в Python принимает два аргумента. Первый – это имя файла с полным путем, а второй – режим открытия файла.

Ниже перечислены некоторые из распространенных режимов чтения файлов:

  • ‘r’ – этот режим указывает, что файл будет открыт только для чтения;
  • ‘w’ – этот режим указывает, что файл будет открыт только для записи. Если файл, содержащий это имя, не существует, он создаст новый;
  • ‘a’ – этот режим указывает, что вывод этой программы будет добавлен к предыдущему выводу этого файла;
  • ‘r +’ – этот режим указывает, что файл будет открыт как для чтения, так и для записи.
Читайте также:  Php throw exception in function

Кроме того, для операционной системы Windows вы можете добавить «b» для доступа к файлу в двоичном формате. Это связано с тем, что Windows различает двоичный текстовый файл и обычный текстовый файл.

Предположим, мы помещаем текстовый файл с именем file.txt в тот же каталог, где находится наш код. Теперь мы хотим открыть этот файл.

Однако функция open (filename, mode) возвращает файловый объект. С этим файловым объектом вы можете продолжить свою дальнейшую работу.

Открытие файла в python

#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

Теперь, когда мы знаем, как читать файл в 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 не работает в библиотеке пользовательских элементов управления

Источник

Оцените статью