独自快乐|嵌入式软件开发助手(1),Python实用案例编程入门:第二十章( 三 )


20.3.5select模块select模块提供了对大多数操作系统中select()和poll()函数的访问 。 在windows上 , 该接口只对socket有效 , 不能用于文件 。 我们的这里的程序用select来读取服务器端的返回信息 , 本质上是也给socket , 因此可以在这里使用 , 代码片段如下 。
read_list,write_list,err_list=select.select([channel],[],[])ifchannelnotinread_list:time.sleep(1)if--timeout_counter<=0:logging.error("Thereisnorespondto%swithin30seconds",command)breakelse:continue更多详细信息可以参考下面链接的内容 。
20.3.6shelve模块shelve模块是一个比较实用的模块 , 我们用它打开一个文件 , 然后像操作字典一样进行数据的读写 。 如果有程序需要保存一些临时数据 , 或者数据不大 , 可以实用此模块进行 。 比如 , 我们的程序中用该模块来存储文件名 , 例如存所有需要被上传到服务器的文件名及路径 。
s=shelve.open("file-list",writeback=True)s['local_files_list']=new_files_lists.close()上面代码是我们用于存储用户名和密码的代码 , 下面再看看当我们需要使用时如何获取用户名和密码 。
s=shelve.open("file-list",writeback=True)local_files_list=s['local_files_list']s.close()20.3.7sys模块sys模块是一个内建模块 , 不需要单独安装 。
sys模块提供了对Python解释器使用的一些变量的访问 , 并可以进行一些修改 , 例如对环境变量PATH的读取和修改 , 并提供了某些和解释器进行交互的函数以使我们的程序能够和解释器进行交互 。
例如 , sys.argv会将命令行参数以list的形式传递给Python脚本 , sys.argv[0]是脚本的名字 , sys.argv[1]是第一个参数 , 以此类推 。
sys.exit()表示退出程序 , 也可以带参数表示退出码 , 如果有其他程序调用该程序 , 即可以通过返回的数字来确定被调用程序的退出原因 。
sys.implementation查看当前正在运行的Python解释器的版本信息 。
>>>sys.implementationnamespace(cache_tag='cpython-36',hexversion=50726384,name='cpython',version=sys.version_info(major=3,minor=6,micro=5,releaselevel='final',serial=0))>>>sys.stdin , sys.stddout , sys.stderr解释器用于标准输入 , 标准输出和错误 。
20.3.8time模块time模块提供了时间相关的各种函数 。
time.asctime()函数可以将结构体struct_time所代表的时间转换为这样的字符串'SunJun1913:31:151994' 。 我们可以通过time.localtime()函数得到结构体struct_time 。
time.sleep()函数的入参单位是秒 , 如果线程需要被挂起 , 可以通过调用此函数达到该目的 。 这里的入参也可以是小数 , 表示更精确的睡眠时间 。 我们将会使用该函数进行必要的等待以确保另一件事情结束 。
time.strftime()函数也用于格式化时间 。
>>>importtime>>>time.strftime('%Y%m%d',time.localtime(time.time()))'20190714'>>>>>>time.strftime('%Y-%m-%d')'2019-07-14'>>>另外一个常用的操作就是用time.strptime()接口来判断给定的字符串是否是一个有效的日期 。
defis_valid_data(date_str):"""Checkifdatestringisvalid"""try:time.strptime(date_str,"%Y%m%d")returnTrueexcept:returnFalse20.3.9binascii模块binascii模块包含了许多方法 , 这些方法可以用于在二进制和各种ASCII编码中进行转换 。 该模块包含了用C语言实现的底层函数 , 使得高层次模块调用的时候可以获得更快的速度 。 在我们的程序中将会使用到unhexlify()方法 , 用于将十六进制数据转化为二进制形式 , 并将该数据存入文件 。
下面是我们程序中使用的代码片段 , 将数据以十六进制形式得到后 , 进行相应的替换处理 , 然后转化为二进制写入新的文件中 。


推荐阅读