`
sjmsjj
  • 浏览: 3974 次
文章分类
社区版块
存档分类
最新评论

搜索输入CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli 搜索输入

阅读更多

每日一贴,今天的内容关键字为搜索输入

    再过两个CDays我们就完成了全部的功能了,不过是在CMD中运行的。

    为了块模化我们的程序,我们先理整一下前以的程序。

# -*- coding: utf-8 -*-
import os
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)

if __name__ == '__main__':      # this way the module can be
    CDROM = 'D:\\CDROM'

这个块模完成了CDROM的遍历,并存进了指定文件中。

    虽然这个程序没有GUI,那么让我们给他计划一个CMD运行的界面吧。

    根据上一次的志日,我们现发根据令命不同会有很多很多的分支,那么我们看一下书上给的例子pycdc-v0.4.py。

# -*- coding: utf-8 -*-
'''pycdc-v0.4.py
Lovely Python -2 PyDay 
'''
import sys, cmd
class PyCDC(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)                # initialize the base class
        self.CDROM = 'D:\\CDROM'
        self.CDDIR = 'D:\\'

    def help_EOF(self):
        print "出退程序 Quits the program"
    def do_EOF(self, line):
        sys.exit()

    def help_walk(self):
        print "描扫光盘内容 walk cd and export into *.cdc"
    def do_walk(self, filename):
        if filename == "":filename = raw_input("输入cdc文件名:: ")
        print "描扫光盘内容存保到:'%s'" % filename

    def help_dir(self):
        print "指定存保/搜索目录"
    def do_dir(self, pathname):
        if pathname == "": pathname = raw_input("输入指定存保/搜索目录: ")
        print "指定存保/搜索目录:'%s' ;默许是:'%s'" % (pathname,self.CDDIR)

    def help_find(self):
        print "搜索关键词"
    def do_find(self, keyword):
        if keyword == "": keyword = raw_input("输入搜索关键字: ")
        print "搜索关键词:'%s'" % keyword

if __name__ == '__main__':      # this way the module can be
    cdc = PyCDC()            # imported by other programs as well
    cdc.cmdloop()

根据书上所述,我们不道知上面的一些语法是什么,的确,我们实确不道知。

    让我们运行一下.

    image

    示提输入.

    image

    输入法合字符有示提.

    image

    输入法合字符, 好吧,程序里没有,我认承我经已看晕了.

    让我们看一下书,书上说是用的CMD块模, 查一下cmd是嘛干的.

    根据做弊条PCS201

    cmd块模为令命行接口cli供给了一个单简的框架.上面给出了一个例子.

# -*- coding: utf-8 -*-
import cmd
import string, sys

class CLI(cmd.Cmd):

    def __init__(self):
        cmd.Cmd.__init__(self)
        self.prompt = '> '    # 定义令命行示提符

    def do_hello(self, arg):   # 定义hello令命所行执的操纵
        print "hello again", arg, "!"

    def help_hello(self):        # 定义hello令命的帮助输出
        print "syntax: hello [message]",
        print "-- prints a hello message"

    def do_quit(self, arg):     # 定义quit令命所行执的操纵
        sys.exit(1)

    def help_quit(self):        # 定义quit令命的帮助输出
        print "syntax: quit",
        print "-- terminates the application"

    # 定义quit的快捷方式
    do_q = do_quit

# 建创CLI实例并运行
cli = CLI()
cli.cmdloop()

根据这个例子中的释注,我们可以道知这个块模大部分的用法。作为CDays-2的要求,我们道知怎么用以可就了。

    我们从新分析pycdc-v0.4.py

    没有定义令命示提符

    do_令命   —————— 是该令命行执的函数

    help_令命  —————— 是该令命的帮助函数

    image

    cmdloop( )  的意思是能主动回返cmd输入令命状态。

    


    让我们参加自己编写的块模好了。

# -*- coding: utf-8 -*-
'''pycdc-v0.5.py
Lovely Python -2 PyDay 
'''
import sys, cmd
from cdctools import *
class PyCDC(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)                # initialize the base class
        self.CDROM = 'D:\\CDROM'
        self.CDDIR = 'D:\\'
        self.prompt="(PyCDC)>"
        self.intro = '''PyCDC 0.5 用使说明:
    dir 目录名     # 指定存保和搜索目录,默许是 "cdc"
    walk 文件名    # 指定光盘息信文件名,用使 "*.cdc"
    find 关键词    # 遍历搜索目录中全部.cdc文件,输出含有关键词的行
    help          # 询查
    EOF           # 出退统系,也可以用使Crtl+D(Unix)|Ctrl+Z(Dos/Windows)
        '''

    def help_EOF(self):
        print "出退程序 Quits the program"
    def do_EOF(self, line):
        sys.exit()

    def help_walk(self):
        print "描扫光盘内容 walk cd and export into *.cdc"
    def do_walk(self, filename):
        if filename == "":filename = raw_input("输入cdc文件名:: ")
        print "描扫光盘内容存保到:'%s'" % filename
        cdWalker(self.CDROM,self.CDDIR+filename)

    def help_dir(self):
        print "指定存保/搜索目录"
    def do_dir(self, pathname):
        if pathname == "": pathname = raw_input("输入指定存保/搜索目录: ")
        self.CDDIR = pathname
        print "指定存保/搜索目录:'%s' ;默许是:'%s'" % (pathname,self.CDDIR)

    def help_find(self):
        print "搜索关键词"
    def do_find(self, keyword):
        if keyword == "": keyword = raw_input("输入搜索关键字: ")
        print "搜索关键词:'%s'" % keyword
        cdcGrep(self.CDDIR,keyword)

if __name__ == '__main__':      # this way the module can be
    cdc = PyCDC()            # imported by other programs as well
    cdc.cmdloop()

image

    到此为止,我们经已基本完成了CDC的除了找查外的全部功能了。

    当初让我们处理找查问题。

    根据时当我们存保的内容,我们将个每文件存保为一行,所以我们可以一行一行的寻觅。

def cdcGrep(cdcpath,keyword):
    filelist = os.listdir(cdcpath)          # 搜索目录中的文件
    for cdc in filelist:                    # 循环文件列表
        cdcfile = open(cdcpath+cdc)         # 拼合文件路径,并打开文件
        for line in cdcfile.readlines():    # 读取文件每一行,并循环
            if keyword in line:             # 判断是不是有关键词外行中
                print line                  # 打印输出

把这段程序放在cdctools.py 中以可就了。

文章结束给大家分享下程序员的一些笑话语录: 人脑与电脑的相同点和不同点,人脑会记忆数字,电脑也会记忆数字;人脑会记忆程序,电脑也会记忆程序,但是人脑具有感知能力,这种能力电脑无法模仿,人的记忆会影响到人做任何事情,但是电脑只有程序软件。比尔还表示,人脑与电脑之间最重要的一个差别就是潜意识。对于人脑存储记忆的特别之处,比尔表示,人脑并不大,但是人脑重要的功能是联络,人脑会把同样的记忆存储在不同的地方,因此记忆读取的速度就不相同,而这种速度取决于使用的频率和知识的重要性。人脑的记忆存储能力会随着年龄增长而退化,同时记忆的质量也会随着年龄退化。经典语录网

分享到:
评论

相关推荐

    infrared-remote-candroid studiodemo

    android studio下载

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar

    node-v8.10.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Yolov5目标检测和deepsort目标跟踪无人机跟踪.zip

    无人机最强算法源码,易于部署和学习交流使用

    数据库课程设计实战.zip

    数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 数据库课程设计实战.zip,使用到了所有的相关SQL 的操作,如增删改查等,让你可以在一个项目里面,锻炼到所有的数据库相关的知识。项目亲测可以运行,里面含有运行相关的文档,不会的可以丝我请求帮助。 数据库课程设计后端 使用Springboot + Mybatis + Redis + Maven 具体的表和相关的数据如下: 用户(电话号码,密码,身份证号,邮箱,真实姓名,用户类型,性别,地址) 乘客(用户电话号码,乘客身份证号,乘客真实姓名,乘客电话号码,乘客类型,地址) 列车信息(列车编号,车次,列车类型,列车车厢数,列车始发站,列车终点站,列车开车时间,列车到达时间,列车到达日期,列车运行时间,列车状态) 列车座位信息(列车编号,车厢号,座位类型,座位数) 列车经停信息(列车编号,车次,车站编号,车站名,到达时间,总运行时间,开车时间) 订单信息(订单编号,用户电话号码,乘客身份证号码,列车编号,出发站编号,到达站编号,车厢号,座位编号,订单创建时间,订单状态,开车时间)

    咨询的分析方法gl.ppt

    咨询的分析方法gl.ppt

    node-v10.14.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2019年电赛无人机题目(B题)OpenMV相关代码

    These're the OpenMV codes written by microPython in 2019 NUEDC. 2019年电赛无人机题目(B题)OpenMV相关代码(原创).zip

    无人机降落TRT版本.zip

    无人机最强算法源码,易于部署和学习交流使用

    熊出没.zip

    熊出没.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip

    基于SpringBoot和Vue的家教信息平台设计与实现.zip 有完整的部署指导文档,源码也是完整的,可以直接运行,里面包含了所有的相关步骤。 本文旨在设计和实现一套基于Java技术的家教信息系统,采用Spring Boot框架构建后端服务,MySQL数据库存储数据,Vue.js作为前端框架实现用户界面。该系统旨在解决家教信息管理的问题,包括家教师资信息管理、用户信息管理以及家教入驻等功能。通过综合运用Java、Spring Boot、MySQL和Vue等技术,实现了系统的高效运行和良好的用户体验。系统提供了用户注册、登录、信息查看和编辑等功能,同时支持家教的发布和查看,用户信息的管理以及家教审核的后台管理。家长可以方便地寻找合适的家教老师,家教老师也能够更便捷地管理自己的信息和相关资料。通过本设计,展示了Java技术在现代化家教信息系统中的应用,为家教行业的信息化管理提供了一种有效的解决方案。该系统的设计与实现将为家长、家教老师和用户提供便利,促进家教行业的发展与进步。 关键词:SpringBoot; MySQL; 系统设计; 家教

    利用CNN进行无人售货机的商品识别.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v11.10.1-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    (R语言)-6-箱线图的绘制

    (R语言)-6-箱线图的绘制

    麦肯锡-xx联通固定市场举措gl.ppt

    麦肯锡-xx联通固定市场举措gl.ppt

    在PyCharm中配置Python环境步骤

    附件是在PyCharm中配置Python环境步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    【北京工业大学】集成电路分析与设计实验报告

    本课程实验分为数字集成电路设计实验与全定制设计实验两部分。 实验1—4为基于Cadence的数字集成电路设计实验部分,主要内容为通过一个简单数字低通滤波器的设计、综合、仿真,让学生熟悉数字集成电路前段实际设计流程,以培养学生实际设计集成电路的能力。具体为:实验1Matlab实现数字低通滤波器算法设计。 实验2Linux环境下基本操作。 实验3RTLCompiler对数字低通滤波器电路的综合。 实验4NC对数字低通滤波器电路的仿真。 其中,实验1主要目的是为了展示算法分析的方法和重要性。使用Matlab实现数字滤波器的算法设计和HDL代码生成。由于Matlab工具可以在Windows环境下工作,而其他集成电路EDA工具均需要在linux下工作,故建议本实验在课堂演示和讲述,学生课下练习。实验2的主要目的是学习linux下的基本操作。包括目录管理、文件管理、文件编辑以及文件压缩等在使用集成电路EDA工具时所需要的操作。本实验是实验3和实验4的基础,建议在实验室完成。

    基于Transformer模型构建的聊天机器人python源码+运行说明.zip

    一、简介 基于Transformer模型构建的聊天机器人,可实现日常聊天。 二、系统说明 2.1 功能介绍 使用者输入文本后,系统可根据文本做出相应的回答。 2.2 数据介绍 * 百度中文问答 WebQA数据集 * 青云数据集 * 豆瓣数据集 * chatterbot数据集 由于数据集过大,因此不会上传,如有需要可以在issue中提出。 2.3. 模型介绍(v1.0版本) 基于Transformer模型,使用Python中的keras-transformer包。 训练的参数文件没有上传,如有需要可在issue中提出。 三、注意事项 * keras-transformer包需要自行安装:`pip install keras-transformer`。 * 如果需要实际运行,参数文件放在`ModelTrainedParameters`文件下;`ListData`文件下包含了已经处理好的字典等数据,不需要修改,直接运行Main.py即可。 * 如果需要自行训练,将数据集文件放在`DataSet`文件下。 * `HyperParameters.py`文件中包含了系统所需

Global site tag (gtag.js) - Google Analytics