>  기사  >  백엔드 개발  >  선반 모듈 기본 소개

선반 모듈 기본 소개

零下一度
零下一度원래의
2017-07-23 10:04:522549검색

shelve

shelve는 open()이라는 함수 하나만 가지고 있으며, 이 함수는 파일 이름인 매개 변수를 받은 다음 선반 개체를 반환할 수 있습니다. 사용 물건을 저장하려면 간단히 사전처럼 처리하면 됩니다. 저장이 끝나면 close 함수를 호출하여 닫으세요.

이것은 다음과 같은 잠재적인 작은 문제가 있습니다:

[python] view plain copy
>>> import shelve  
>>> s = shelve.open('test.dat')  
>>> s['x'] = ['a', 'b', 'c']  
>>> s['x'].append('d')  
>>> s['x']  
['a', 'b', 'c']

저장된 d는 어디로 가나요? 모직물? 실제로는 매우 간단합니다. d는 다시 쓰지 않습니다. s['x']를 다시 읽으면 s['x']가 됩니다. 단지 사본이고 사본을 다시 쓰지 않았기 때문에 s['x'] 를 다시 읽으면 소스에서 사본을 읽으므로 새로 수정된 내용이 사본에 나타나지 않습니다. 해결책은 다음과 같습니다. 첫 번째는 아래와 같이 캐시된 변수를 사용하는 것입니다.

[python] view plain copy
>>> temp = s['x']  
>>> temp.append('d')  
>>> s['x'] = temp  
>>> s['x']  
['a', 'b', 'c', 'd']

python2.4에는 open 메소드의 writeback 매개변수 값을 True로 할당하는 또 다른 메소드가 있습니다. 모든 내용은 캐시에 저장됩니다. 닫으면 모든 내용이 한 번에 하드 디스크에 기록됩니다. 데이터의 양이 그리 크지 않은 경우에 권장됩니다.

1. 소개

Python3에서는 데이터를 유지하기 위해 json 또는 pickle을 사용합니다. 여러 번 덤프할 수 있지만 나중에 덤프된 데이터로 이전 데이터를 덮어쓰기 때문에 한 번만 로드할 수 있습니다. . 덤프와 로드를 여러 번 구현하려면 shelve 모듈을 사용할 수 있습니다. shelve 모듈은 pickle이 지원하는 모든 데이터 유형을 유지할 수 있습니다.

2. 영구 데이터

1. 데이터 지속성

import shelve
import datetime

info = {'name': 'bigberg', 'age': 22}
name = ['Apoll', 'Zous', 'Luna']
t = datetime.datetime.now()

with shelve.open('shelve.txt') as f:
    f['name'] = name    # 持久化列表
    f['info'] = info         # 持久化字典 
    f['time'] = t            # 持久化时间类型

코드를 실행하면 shelve.txt.bak, shelve.txt.dat, shelve.txt 파일 3개가 생성됩니다. .dir.

  • shelve.txt.bak의 내용

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)
  • shelve.txt.dat의 내용

�]q (X   ApollqX   ZousqX   Lunaqe.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      �}q (X   ageqKX   nameqX   bigbergqu.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   �cdatetime
datetime
q C
�"
2�q�qRq.
  • 2의 내용, 데이터 읽기

  • 우리는 데이터를 얻기 위해 get을 사용합니다
'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)

1. shelve 모듈은 파일을 통해 메모리 데이터를 유지하는 간단한 키 및 값 모듈입니다.

2. shelve 모듈은 pickle이 지원하는 모든 Python 데이터 형식을 유지할 수 있습니다.

3. Shelve는 피클 모듈 패키지입니다.

4. 선반 모듈은 여러 번 덤프하고 로드할 수 있습니다.

위 내용은 선반 모듈 기본 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.