Python3学习笔记

简介: Python3学习笔记

通过 pickle 序列化实现一个简单联系人信息管理:

import pickle

import os


datafile ='person.data'

line ='======================================='

message ='''

=======================================

Welcome bookmark:

   press 1 to show list

   press 2 to add pepole

   press 3 to edit pepole

   press 4 to delete pepole

   press 5 to search pepole

   press 6 to show menu

   press 0 to quit

=======================================

'''

print(message)


classPerson(object):

   """通讯录联系人"""

   def __init__(self, name, number):

       self.name = name

       self.number = number


# 获取数据

def get_data(filename=datafile):

   # 文件存在且不为空

   if os.path.exists(filename)and os.path.getsize(filename):

       with open(filename,'rb')as f:

           return pickle.load(f)

   returnNone

       

# 写入数据

def set_data(name, number, filename=datafile):


   personList ={}if get_data()==Noneelse get_data()


   with open(filename,'wb')as f:

       personList[name]=Person(name,number)

       pickle.dump(personList,f)


# 保存字典格式的数据到文件

def save_data(dictPerson, filename=datafile):

   with open(filename,'wb')as f:

       pickle.dump(dictPerson,f)


# 显示所有联系人

def show_all():

   personList = get_data()

   if personList:

       for v in personList.values():

           print(v.name,v.number)

       print(line)

   else:

       print('not yet person,please add person')

       print(line)


# 添加联系人

def add_person(name,number):

   set_data(name,number)

   print('success add person')

   print(line)


# 编辑联系人

def edit_person(name,number):

   personList = get_data()

   if personList:

       personList[name]=Person(name,number)

       save_data(personList)

       print('success edit person')

       print(line)


# 删除联系人

def delete_person(name):

   personList = get_data()

   if personList:

       if name in personList:

           del personList[name]

           save_data(personList)

           print('success delete person')

       else:

           print(name,' is not exists in dict')

       print(line)



# 搜索联系人

def search_person(name):

   personList = get_data()

   if personList:

       if name in personList.keys():

           print(personList.get(name).name, personList.get(name).number)

       else:

           print('No this person of ',name)

       print(line)

       


whileTrue:

   num = input('>>')


   if num =='1':

       print('show all personList:')

       show_all()

   elif num =='2':

       print('add person:')    

       name = input('input name>>')

       number = input('input number>>')

       add_person(name,number)

   elif num =='3':

       print('edit person:')

       name = input('input name>>')

       number = input('input number>>')

       edit_person(name,number)

   elif num =='4':

       print('delete person:')

       name = input('input name>>')

       delete_person(name)

   elif num =='5':

       print('search :')

       name = input('input name>>')

       search_person(name)

   elif num =='6':

       print(message)

   elif num =='0':

       break

   else:

       print('input error, please retry')

相关文章
|
3月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
671 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
3月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
197 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
3月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
222 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
3月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
83 1
|
3月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
172 1
|
3月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
56 2
|
3月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
43 1
|
3月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
52 0
【免费分享编程笔记】Python学习笔记(二)
|
3月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
57 2
|
3月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
59 1