이 기사는 Python의 선반 모듈에 대한 간략한 소개를 제공합니다(예제 포함). 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구가 도움이 되기를 바랍니다.
shelve: 객체 지속성 모듈은 객체를 파일에 저장합니다(기본 데이터 저장 파일은 바이너리임). 이는 pickle에서 지원하는 모든 Python 데이터 형식을 유지할 수 있습니다. shelve의 유일한 방법:
shelve.open( filename,flag = 'c', 프로토콜 = None , writebake = False)
관련 파일 경로 | flag |
'r' : 열기 데이터 읽기 전용 모드의 저장 파일 | 'w' : 읽기-쓰기 모드로 기존 데이터 저장 파일 열기 |
'c' :( 기본값) 읽기-쓰기 모드로 데이터 저장 파일 열기 모드, 존재하지 않으면 생성 | |
'n' : 항상 읽기-쓰기 모드로 열고 새로운 빈 데이터 저장 파일 생성 | |
프로토콜 | |
은 다음에 사용되는 프로토콜을 나타냅니다. 데이터 직렬화, 기본값은 없음(pickle v3)입니다. | writebake |
1. 같은 방식으로(참고: 키는 문자열이어야 하며 값은 모든 데이터 유형일 수 있음) |
2. shelve의 직렬화
는 클래스 데이터를 직렬화한 다음 요소를 역직렬화할 수 있습니다
피클은 덤프 순서대로만 요소를 로드할 수 있다는 점에서 피클과 다릅니다. 반면 shelve는 파일에 저장된 서로 다르거나 동일한 키 값을 직접 반복적으로 꺼낼 수 있습니다.
3.
import shelve
def store_information(database):
info = {}
ID = input('Enter the ID number:')
info['name'] = input('Enter the name:') # 将name ,age , phone 存入字典info里
info['age'] = input('Enter the age:')
info['phone'] = input('Enter the phone:')
database[ID] = info # 用ID : info 存入 database文件
def lookup_information(database):
ID = input('Enter the ID:')
field = input('What would you like to know?(name,age,phone)')
field = field.strip().lower()
print(database[ID][field]) # 通过输入的ID与 field 直接打印结果
def print_help():
print('Please enter the help command:')
print('store :store informatinon to database')
print('lookup :look up information by numID')
print('quit :save information and quit')
print('? :print help command')
def enter_command():
cmd = input('Enter command (? for help)')
cmd = cmd.strip().lower()
return cmd
def main():
database = shelve.open('db.dat')
try:
while True:
cmd = enter_command()
if cmd == 'store':
store_information(database) # 当if函数结束,自动跳转到cmd = enter_command()行
elif cmd == 'lookup':
lookup_information(database)
elif cmd == '?':
print_help()
elif cmd == 'quit':
return # 跳出while循环
finally:
database.close()
if __name__ == '__main__': main()
위 내용은 Python의 shelve 모듈에 대한 간략한 소개(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!