Как удалить из файла рассола в Python?

Опубликовано: 14 Декабря, 2021

Модуль 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.