Как удалить из файла рассола в Python?
Модуль pickle Python используется для сериализации и десериализации структуры объекта Python. Любой объект в Python можно мариновать, чтобы его можно было сохранить на диск. Что делает pickle, так это то, что он сначала «сериализует» объект, прежде чем записать его в файл. Обработка - это способ преобразовать объект Python (список, словарь и т. Д.) В поток символов. Идея состоит в том, что этот символьный поток содержит всю информацию, необходимую для восстановления объекта в другом скрипте Python.
Pickle сериализует один объект за раз и считывает один объект - обработанные данные последовательно записываются в файл. Если вы просто выполните pickle.load, вы будете читать первый объект, сериализованный в файл (а не последний, как вы написали). После десериализации первого объекта указатель файла находится в начале следующего объекта - если вы просто вызовете pickle.load снова, он прочитает этот следующий объект - делайте это до конца файла.
Используемые функции:
- dump () - используется для записи консервированного представления obj в объектный файл открытого файла.
Синтаксис:
pickle.dump(obj, file, protocol = None, *, fix_imports = True)
- load () - используется для чтения представления консервированного объекта из открытого файлового объектного файла и возврата указанной воссозданной иерархии объектов.
Синтаксис:
pickle.load(file, *, fix_imports = True, encoding = “ASCII”, errors = “strict”)
- seek (0) - записи Pickle могут быть объединены в файл, так что да, вы можете просто pickle.load (f) несколько раз, но сами файлы не индексируются таким образом, чтобы вы могли искать в данной записи. То, что делает ваш f.seek (0), ищет в третьем байте в файле, который находится в середине записи рассола и, следовательно, недоступен. Если вам нужен произвольный доступ, вы можете изучить встроенный модуль полки, который создает словарный интерфейс поверх pickle с использованием модуля файла базы данных.
- truncate () - изменяет размер файла
Чтобы удалить содержимое из файла pickle, нам сначала нужно добавить в него содержимое, ниже приведен подход к тому же самому вместе с его реализацией:
Подход
- Модуль импорта
- Открыть файл в режиме записи
- Введите данные
- Выгрузить данные в файл
- Продолжайте, пока выбор не станет положительным
- Закрыть файл
Программа:
Python3
import pickle def write_file(): f = open ( "travel.txt" , "wb" ) op = 'y' while op = = 'y' : Travelcode = int ( input ( "enter the travel id" )) Place = input ( "Enter the Place" ) Travellers = int ( input ( "Enter the number of travellers" )) buses = int ( input ( "Enter the number of buses" )) pickle.dump([Travelcode, Place, Travellers, buses], f) op = input ( "Dp you want to continue> (y or n)" ) f.close() print ( "entering the details of passengers in the pickle file" ) write_file() |
Теперь, когда у нас есть данные, введенные в файл, ниже представлен подход к удалению данных из него вместе с реализацией на его основе:
Подход
- Модуль импорта
- Открыть файл
- Введите информацию об удаляемых данных
- Удалить соответствующие данные
- Закрыть файл
Программа:
Python3
import pickle def delete_details(): f1 = open ( "travel.txt" , 'rb+' ) travelList = [] t_place = input ( "Enter the place to delete :" ) while True : try : L = pickle.load(f1) if (L[ 1 ] ! = t_place): travelList.append(L) except EOFError: print ( "completed deleting details" ) break f1.seek( 0 ) f1.truncate() for i in range ( len (travelList)): pickle.dump(travelList[i], f1) else : f1.close() # reading content in the file. def read_file(): f = open ( "travel.txt" , 'rb' ) while True : try : L = pickle.load(f) print ( "Place" , L[ 1 ], " Travellers :" , L[ 2 ], " Buses :" , L[ 3 ]) except EOFError: print ( "Completed reading details" ) break f.close() print ( "deleting the desired coloumn" ) delete_details() print ( "Reading the file" ) read_file() |
Выход:
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.