记录文件下电子书籍是否已读过的Python小程序(源码)

程序员电脑上一般都会有很多电子书籍,有的书名字都差不多,时间长了也不记得哪些书读过,哪些书没读过。

初学Python,用它写了个小程序,生成bookList.txt文件来记录书籍是否读过:

1、将check_books.py文件放在存放电子书籍的目录下;

2、运行check_books.py -create命令初次生成记录文件bookList.txt;

3、打开bookList.txt,将读过的书籍在书籍名前面的括号中标记“*”号(注意()中的空格,标记*号后没有空格);

4、该文件夹下有新增书籍时运行check_books.py会自动在记录文件中增加书籍,并将标记置为未读;

5、通过check_books.py “文件名”可查询该书籍是否已读;

6、打开bookList.txt文件浏览查看书籍是否已读;

7、同样可用于电影、电视剧记录,方法一样。

代码:

#-*-coding:utf-8 -*-
##################################################################################
#file name:check_books.py
#功能:记录当前目录book是否已读,已读标记(*),未读标记( )
#版本:v0.0
#第一次生成记录文件:check_books.py -create
#目录新增文件是更新记录文件:check_books.py
#查看某一书籍是否已读:check_books.py 文件名
##################################################################################
#待更新:文件夹迭代查询记录
##################################################################################
import os,sys

def main():
	FILE_NAME = 'bookList.txt'
	book_mark_dict = {}

	pwd = os.path.dirname(__file__)
	book_list = os.listdir(pwd)
	MARK = "(*)"
	NOTMARK = "( )"

	try:
		is_create = sys.argv[1]
		#新建book list 文件,所有book初始化为未读
		if is_create == '-create':
			print "Create New book list!"
			create_book_list(FILE_NAME,book_list,NOTMARK)
			return
	except IndexError,SyntaxError:	
		print "Updating book list..."

	updateFlag = False
	book_mark_dict = read_book_list(FILE_NAME)
	for book in book_list:
		if book_mark_dict.has_key(book): #book已经存在,不处理
			pass
		else: #book不存在,插入字典,初始化为未读
			print '%s do not exist,update the list...' %(book)
			updateFlag = True
			book_mark_dict[book] = NOTMARK

	f = open(FILE_NAME,'w')
	for book in book_mark_dict:
		f.write('%s%s%s' %(book_mark_dict[book],book,'\n'))
	f.close()

	#查询某一book已读标记
	try:
		book_name = sys.argv[1]
		if book_name in book_list:
			print "Check the book %s read flag!" %(book_name)
			read_flag = book_mark_dict[book_name]
			if read_flag == MARK:
				print "You have read it!"
			elif read_flag == NOTMARK:
				print "You have not read it!"
			else:
				print "Error!"
			return 
		else:
			print 'You input book name error!'
			return
	except IndexError,SyntaxError:
		pass

	if updateFlag == True:
		print "Update bookList finished!"
	else:
		print "No book to update!"

def create_book_list(file_name,book_list,mark):
	f = open(file_name,'w')
	for book_name in book_list:
		f.write('%s%s%s' %(mark,book_name,'\n'))
	f.close()

#读取book list文件,返回文件名和是否已读标记的键值对
def read_book_list(file_name):
	try:
		f = open(file_name,'r')
	except IOError:
		print "BookList do not existed,Please Create bookList First!"
		print 'Input "check_books.py -create" to create bookList.txt'
		sys.exit()
	
	book_dict = {}
	for eachLine in f.readlines():
		book_dict[eachLine[3:-1]] = eachLine[0:3]
	f.close()
	return book_dict

if __name__ == '__main__':
	main()


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值