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로 할당하는 또 다른 메소드가 있습니다. 모든 내용은 캐시에 저장됩니다. 닫으면 모든 내용이 한 번에 하드 디스크에 기록됩니다. 데이터의 양이 그리 크지 않은 경우에 권장됩니다.
Python3에서는 데이터를 유지하기 위해 json 또는 pickle을 사용합니다. 여러 번 덤프할 수 있지만 나중에 덤프된 데이터로 이전 데이터를 덮어쓰기 때문에 한 번만 로드할 수 있습니다. . 덤프와 로드를 여러 번 구현하려면 shelve 모듈을 사용할 수 있습니다. shelve 모듈은 pickle이 지원하는 모든 데이터 유형을 유지할 수 있습니다.
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.
'info', (512, 45) 'name', (0, 42) 'time', (1024, 44)
3. Shelve는 피클 모듈 패키지입니다.
4. 선반 모듈은 여러 번 덤프하고 로드할 수 있습니다.
위 내용은 선반 모듈 기본 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!