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

来源:互联网 发布:数字报软件 编辑:程序博客网 时间:2024/04/29 09:54

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

初学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,sysdef 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)returnexcept IndexError,SyntaxError:print "Updating book list..."updateFlag = Falsebook_mark_dict = read_book_list(FILE_NAME)for book in book_list:if book_mark_dict.has_key(book): #book已经存在,不处理passelse: #book不存在,插入字典,初始化为未读print '%s do not exist,update the list...' %(book)updateFlag = Truebook_mark_dict[book] = NOTMARKf = 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!'returnexcept IndexError,SyntaxError:passif 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_dictif __name__ == '__main__':main()


1 0