《可爱的Python》读书笔记(三)

先用后学,快速获得体验,然后寻求理论支持。

小白根据已有的体验,对PyCDC的软件需求进行了进一步完善。

将以往验证想法的代码,变成可以方便使用的功能,让它可以重复在不同应用环境中使用。小白想象着自个儿的PyCDC可以像普通的命令行工具一样来使用。

行者提出“可以使用getopt.getopt()优化当前功能函式”

# -*- coding: utf-8 -*-
import os
import sys
import getopt

CDROM = 'E:\\'
def cdWalker(cdrom,cdcfile):
    export = ""
    for root, dirs, files in os.walk(cdrom):
        export += "\n %s;%s;%s" % (root,dirs,files)
    open(cdcfile, 'w').write(export)
#运行命令行工具的帮助提示    
def usage():
    print('Usage:python %s -e filename' % sys.argv[0])
    
try:
    opts, args = getopt.getopt(sys.argv[1:], 'e:')
    #内有输入参数将显示帮助提示,并退出程序
    if len(opts) == 0:
        usage()
        sys.exit()
    for opt, arg in opts:
        if opt == '-e':
            cdWalker(CDROM, arg)
            print("记录光盘信息到 %s" % arg)
        else:
            usage()
            sys.exit()
except getopt.GetoptError:
    usage()
    sys.exit()

运行效果:

C:\>python pycdc.pyw
Usage:python pycdc.pyw -e filename
C:\>python pycdc.pyw -e test.txt
记录光盘信息到 test.txt

查看test.txt内容如下:

E:\;['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:\EFI;['BOOT'];['TRANS.TBL']

E:1\EFI\BOOT;[];['BOOTX64.conf', 'BOOTX64.efi', 'splash.xpm.gz', 'TRANS.TBL']

E:\images;['pxeboot'];['efiboot.img', 'efidisk.img', 'install.img', 'TRANS.TBL']

E:\images\pxeboot;[];['initrd.img', 'TRANS.TBL', 'vmlinuz']

E:\isolinux;[];['boot.cat', 'boot.msg', 'grub.conf', 'initrd.img', 'isolinux.bin', 'isolinux.cfg', 'memtest', 'splash.jpg', 'TRANS.TBL', 'vesamenu.c32', 'vmlinuz']

E:\[BOOT];[];['1-Boot-NoEmul.img', '2-Boot-NoEmul.img']

小白虽然不是非常明白getopt的使用,也还是依葫芦画瓢写了出来,基本实现了想要的功能。

总结:今天学习了使用简单的getopt实现基本的命令行工具,使用了try...except处理异常,使得程序变得更方便使用

原文地址:http://blog.51cto.com/9473774/2089235

时间: 2024-11-02 11:23:19

《可爱的Python》读书笔记(三)的相关文章

世界是数字(读书笔记)

<世界是数字的>是世界顶尖计算机科学家Brian W.Kernighan写的一本计算机科普类读物,简明扼要但又深入全面地解释了计算机和通信系统背后的秘密,适合计算机初学者和非计算机专业的人读.这真的是一本好书,借Google常务董事长的话: 对计算机.互联网及其背后的奥秘充满好奇的人们,这绝对是一本不容错过的好书. 对于一个计算机已经学了N年的专业人士来说,这本书也许简单了点,不过我还是认真过了一遍,发现也有一定的收货,因为一个人很难掌握本领域里的所有知识,或多或少会有一些欠缺,总会有一些你以

&lt;世界是数字的&gt;读书笔记

<世界是数字的>读书笔记 <我是一只IT小小鸟>还余温未凉,老师就给我们介绍了新书名为<世界是数字的>.刚开始看这书名觉得世界是数字化的不是很正常嘛,新世纪新时代当然要有新改革,现代市场早就已经被数字产品给占领了,像笔记本电脑,数码相机等高科技产品在21世纪都是,屡见不鲜,不足为奇了.但是看完这本<世界是数字的>后,我发现我对数字化的世界还是停留在一知半解的地步. 第一章问我们计算机里有什么?计算机里有什么,我的第一反应就是鼠标键盘啊,这么想的肯定不止我一个

《世界是数字的》读书笔记 三

<世界是数字的>读书笔记 三 第六章 软件系统 操作系统是软件中的基础层,他负责管理计算机硬件,并为其他被称作应用程序的程序运行提供支持. 6.1操作系统 操作系统控制和分配计算机资源.首先,他负责管理CPU,调度和协调当前运行的程序.操作系统通常都需要管理数十个同时运行的进程或任务. 其次,操作系统管理RAM.他把程序加载到内存中以便执行指令. 最后,操作系统管理和协调外接设备的活动. 6.2操作系统怎么工作 计算机启动时首先要加载代码,加载的过程中还要检查硬件,比如哪些设备已经接入电脑,,

悟道—位IT高管20年的职场心经(读书笔记三)

悟道--一位IT高管20年的职场心经 第三章 世事洞明皆学问 职场就是你的大半个世界 是你一辈子也读不完的一大本书 想明白一个道理, 看明白一件事儿, 你就向成功迈进了一步. 1.1  "四行"说 四行是指: 第一,  你自己得行.自己的基础的能力是必须的,得靠自己学习. 第二,  得有人说你行.需要有伯乐,实际上是你得有一个自己的圈子,并且这些人都人认同你. 第三,  说你行的人得行.自己周围的圈子,里面也必须有牛人,只有在牛人的范围内,才能突显你自己的才能. 第四,  你身子骨得行

《你必须知道的.NET》读书笔记三:体验OO之美

一.依赖也是哲学 (1)本质诠释:"不要调用我们,我们会调用你" (2)依赖和耦合: ①无依赖,无耦合: ②单向依赖,耦合度不高: ③双向依赖,耦合度较高: (3)设计的目标:高内聚,低耦合. ①低耦合:实现最简单的依赖关系,尽可能地减少类与类.模块与模块.层次与层次.系统与系统之间的联系: ②高内聚:一方面代表了职责的统一管理,一方面又代表了关系的有效隔离: (4)控制反转(IoC):代码的控制器交由系统控制而不是在代码内部,消除组件或模块间的直接依赖: (5)依赖注入(DI): ①

《R实战》读书笔记三

第二章  创建数据集 本章概要 1探索R数据结构 2使用数据编辑器 3数据导入 4数据集标注 本章所介绍内容概括如下. 两个方面的内容. 方面一:R数据结构 方面二:进入数据或者导入数据到数据结构 理解数据集 一个数据集通常由一个表格组合而成,行表示观测,列表示变量.病人的数据集如表1所示. 表1 病人数据集 数据集能够反映数据结构.数据类型和内容. 数据结构 R数据结构如图2所示. 图2:R数据结构 数据结构即数据的组织方式,R数据结构包括向量.矩阵.数组.数据框和列表等. R向量 R向量是一

《大型网站技术架构》读书笔记三:大型网站核心架构要素

一.性能—响应时间决定用户 (1)浏览器端: ①浏览器缓存: ②使用页面压缩: PS:Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右.想要启用Gzip压缩,提高浏览速度,可以浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml ③合理布局页面: CSS:把样式表置于顶部:避免使用CSS表达式(expression_r):使用外部JavaScript和CSS:削减JavaScri

Struts2技术内幕 读书笔记三 表示层的困惑

表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form1" method="post" action="loginServlet"> <table width="357" border="0" align="center"> <t

《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair

前面两篇文章介绍了淘宝的发展历程和Java时代的变迁: <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源 <淘宝技术这十年>读书笔记 (二).Java时代的脱胎换骨和坚若磐石 马云说过"创新不是为了与对手竞争,而是跟明天竞争",所以这篇文章讲述淘宝的创新技术TFS和Tair及创新的产品. 该篇文章不仅仅对在读大学生非常有所帮助,因为你能从文章中看到很多你需要学习的知识,不仅仅包括数据库.计算机网络.操作系统.数据结构等基础课程:还根据时代的技术变迁讲述了

《算法导论》读书笔记(三)

本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn).另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能很好的工作. 1.快速排序的描述 快速排序算法采用的分治算法,因此对一个子数组A[p-r]进行快速排序的三个步骤为: (1)分解:数组A[p...r]被划分为两个(可能为空)子数组A[p...q-1]和A[q+1...