可爱的python图片_《可爱的Python》读书笔记(六)

没有完美的软件,够用并且容易使用的软件已经算是完美的了。

今天整理这几天的代码# -*- coding: utf-8 -*-

import os

import sys

import cmd

class PyCDC(cmd.Cmd):

def __init__(self):

# 初始化基类

cmd.Cmd.__init__(self)

self.CDROM = 'E:\\iso\\CentOS-6.8-x86_64-bin-DVD1'

self.CDDIR = 'F:\\back\\'

# 定义命令行环境的前缀字符

self.prompt = "(PyCDC)>"

# 定义命令行环境的最初提示

self.intro = """使用说明:

dir 目录名   # 指定保存和搜索目录,默认是"F:\\back\\"

walk 文件名  # 指定光盘信息文件名,使用"*.cdc"

find 关键词  # 使用在保存和搜索目录中遍历所有.cdc文件,输出含有关键词的行

?     #查询

quit  #推出系统,也可以使用Ctrl+D(Unix)|Ctrl+Z(Dos/windows)

"""

def do_walk(self, filename):

if filename == "":

filename = input("请输入cdc文件名:")

print("指定保存的文件名为:'%s'" % filename)

cdWalker(self.CDROM, self.CDDIR+filename)

def help_walk(self):

print("扫描指定路径的目录结构,并输出到指定的'.cdc'文件中")

def do_dir(self, pathname):

if pathname == "":

pathname = input("请输入指定保存/搜索目录(默认是:'%s'):" % (self.CDDIR))

self.CDDIR = pathname

print("指定保存/搜索目录为:'%s'" % (pathname))

mkdir(pathname)

def help_dir(self):

print("指定保存/搜索目录")

def do_find(self, keyword):

if keyword == "":

keyword = input("请输入搜索关键词:")

print("指定搜索关键词为:'%s'" % keyword)

cdcGrep(self.CDDIR, keyword)

def help_find(self):

print("搜索关键词")

def do_quit(self, arg):

sys.exit()

def help_quit(self):

print("退出程序")

# 定义quit的快捷方式

do_q = do_quit

def cdWalker(cdrom, cdcfile):

'''

扫描指定路径的目录结构并保存为新的文件

'''

export = []

for root, dirs, files in os.walk(cdrom):

export.append("\n %s;%s;%s" % (root, dirs, files))

open(cdcfile, 'w').write(''.join(export))

print('扫描目录结构保存到{}'.format(cdcfile))

def cdcGrep(cdcpath, keyword):

'''

光盘信息文本关键词搜索

'''

# 搜索目录中的文件

filelist = os.listdir(cdcpath)

cdcpath = cdcpath + "\\"

# 循环文件列表

for cdc in filelist:

if os.path.isdir(cdcpath+cdc):

print('搜索子目录{}'.format(cdcpath+cdc))

# 若是子目录,则递归调用完成查找

cdcGrep(cdcpath+cdc, keyword)

else:

if cdc.endswith('.cdc'):

print('找到目标文件:{}'.format(cdc))

# 拼合文件路径,并打开文件

cdcfile = open(cdcpath + cdc)

# 读取文件每一行,并循坏

for line in cdcfile.readlines():

exist = False

# 判断是否有关键词在行中

if keyword in line:

print(line)

exist = True

if not exist:

print('文件{}中,找不到关键词{}'.format(cdc, keyword))

def mkdir(pathname):

'''

自动创建不存在的目录

'''

# 去除首尾空格

path=pathname.strip()

# 去除尾部 \ 符号

path=pathname.rstrip("\\")

# 判断路径是否存在

if not os.path.exists(pathname):

try:

# 创建目录

os.makedirs(pathname)

except FileNotFoundError as reason:

print(reason)

else:

print('指定的目录不存在,将自动为您创建')

if __name__ == '__main__':

cdc = PyCDC()

cdc.cmdloop()

运行效果如下:使用说明:

dir 目录名   # 指定保存和搜索目录,默认是"F:\back\"

walk 文件名  # 指定光盘信息文件名,使用"*.cdc"

find 关键词  # 使用在保存和搜索目录中遍历所有.cdc文件,输出含有关键词的行

?     #查询

quit  #推出系统,也可以使用Ctrl+D(Unix)|Ctrl+Z(Dos/windows)

(PyCDC)>walk

请输入cdc文件名:1.cdc

指定保存的文件名为:'1.cdc'

扫描目录结构保存到F:\back\1.cdc

(PyCDC)>?dir

指定保存/搜索目录

(PyCDC)>dir

请输入指定保存/搜索目录(默认是:'F:\back\'):G:\back\

指定保存/搜索目录为:'G:\back\'

[WinError 3] 系统找不到指定的路径。: 'G:\\'

(PyCDC)>dir F:\back\bak\

指定保存/搜索目录为:'F:\back\bak\'

指定的目录不存在,将自动为您创建

(PyCDC)>walk 2.cdc

指定保存的文件名为:'2.cdc'

扫描目录结构保存到F:\back\bak\2.cdc

(PyCDC)>find

请输入搜索关键词:image

指定搜索关键词为:'image'

找到目标文件:2.cdc

E:\iso\CentOS-6.8-x86_64-bin-DVD1;['EFI', 'images', 'isolinux', '[BOOT]'];['.discinfo', '.treeinfo', 'CentOS_BuildTag', 'EULA', 'GPL', 'RELEASE-NOTES-en-US.html', 'RPM-GPG-KEY-CentOS-6', 'RPM-GPG-KEY-CentOS-Debug-6', 'RPM-GPG-KEY-CentOS-Security-6', 'RPM-GPG-KEY-CentOS-Testing-6', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images;['pxeboot'];['efiboot.img', 'efidisk.img', 'install.img', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images\pxeboot;[];['initrd.img', 'TRANS.TBL', 'vmlinuz']

(PyCDC)>dir F:\back

指定保存/搜索目录为:'F:\back'

(PyCDC)>find images

指定搜索关键词为:'images'

找到目标文件:1.cdc

E:\iso\CentOS-6.8-x86_64-bin-DVD1;['EFI', 'images', 'isolinux', '[BOOT]'];['.discinfo', '.treeinfo', 'CentOS_BuildTag', 'EULA', 'GPL', 'RELEASE-NOTES-en-US.html', 'RPM-GPG-KEY-CentOS-6', 'RPM-GPG-KEY-CentOS-Debug-6', 'RPM-GPG-KEY-CentOS-Security-6', 'RPM-GPG-KEY-CentOS-Testing-6', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images;['pxeboot'];['efiboot.img', 'efidisk.img', 'install.img', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images\pxeboot;[];['initrd.img', 'TRANS.TBL', 'vmlinuz']

搜索子目录F:\back\back1

搜索子目录F:\back\back1\back11

搜索子目录F:\back\back2

搜索子目录F:\back\bak

找到目标文件:2.cdc

E:\iso\CentOS-6.8-x86_64-bin-DVD1;['EFI', 'images', 'isolinux', '[BOOT]'];['.discinfo', '.treeinfo', 'CentOS_BuildTag', 'EULA', 'GPL', 'RELEASE-NOTES-en-US.html', 'RPM-GPG-KEY-CentOS-6', 'RPM-GPG-KEY-CentOS-Debug-6', 'RPM-GPG-KEY-CentOS-Security-6', 'RPM-GPG-KEY-CentOS-Testing-6', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images;['pxeboot'];['efiboot.img', 'efidisk.img', 'install.img', 'TRANS.TBL']

E:\iso\CentOS-6.8-x86_64-bin-DVD1\images\pxeboot;[];['initrd.img', 'TRANS.TBL', 'vmlinuz']

(PyCDC)>find cd

指定搜索关键词为:'cd'

找到目标文件:1.cdc

文件1.cdc中,找不到关键词cd

找到目标文件:11.cdc

文件11.cdc中,找不到关键词cd

搜索子目录F:\back\\back1

搜索子目录F:\back\\back1\back11

搜索子目录F:\back\\back2

搜索子目录F:\back\\bak

找到目标文件:2.cdc

文件2.cdc中,找不到关键词cd

(PyCDC)>q

以上代码加入了“在手动指定了不存在的保存/搜索目录时将自动创建该目录”的功能,实现了完成版本的PyCDC!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值