工作中会经常需要写一些命令行脚本,如果还是用if,else判断用户输入实在是太丑陋了。这里介绍几个python里的命令行脚本库,可以帮助我们快速开发好用的命令行脚本。
https://docs.python.org/3/library/cmd.html
使用方式是继承Cmd,实现自己的子类。
参数comletekey是自动补全操作,默认值是Tab, 如果不为None 且readline可用的话,命令会自动完成。
这里的readline指的是python实现的 GNU readline 接口(标准python库里没有,Windows系统不支持)。
参数stdin,stdout是输入输出流,默认是sys.stdin,sys.stout。
cmd提供了一个简单的框架,但是功能比较简单,python还有其他的很多第三方库可以用来写命令行程序。
https://www.cnblogs.com/xueweihan/p/12293402.html 这篇文章对比了各个库的功能,贴在这里:
看起来fire是最简单的,来试一下。
fire 则是用一种面向广义对象的方式来玩转命令行,这种对象可以是类、函数、字典、列表等,它更加灵活,也更加简单。你都不需要定义参数类型,fire 会根据输入和参数默认值来自动判断,这无疑进一步简化了实现过程。
以下示例为 fire 实现的 计算器程序:
从上述示例可以看出,fire 提供的方式无疑是最简单、并且最 Pythonic 的了。我们只需关注业务逻辑,而命令行参数的定义则和函数参数的定义融为了一体。
不过,有利自然也有弊,比如 nums 并没有说是什么类型,也就意味着输入字符串'abc'也是合法的,这就意味着一个严格的命令行程序必须在自己的业务逻辑中来对期望的类型进行约束。
㈡ LiteOS通信模组教程03-AT指令玩转NB-IoT通信
BC35-G 是一款高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B8/B5/B20/B28 频段,在设计和AT指令上与BC95兼容。
小熊派开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。
指令:AT
功能:测试AT指令功能是否正常
示例:
指令:AT+CSQ
功能:返回从 UE 接收到的信号强度指示 <rssi> 和信道误码率 <ber> ,其中第一个值rssi应当在0-31之间,如果为99则表示信号无法检测,第二个参数ber因为模组当前不支持,所以始终为99。
示例:
指令:AT+CEREG?
功能:查询当前 EPS 网络注册状态,该指令返回的第一个参数为0则表示禁止网络注册URC,第二个参数表示网络注册状态,1表示已注册本地网,5表示已注册漫游网络,其余值则表示注册失败。
示例:
指令:AT+CGATT?
功能:该命令用于查询当前是否将 UE 附着于 PS 域,返回值为1则表示已附着,即网络激活成功。
示例:
指令:AT+CGPADDR
功能:该命令用于查询模组当前的ip地址。
示例:
由于NB-IoT模组可以直接对接IoT平台,所以在单独测试使用UDP连接时,需要 在激活网络成功之后,在获取ip地址之前,关闭IoT平台注册功能 。
使用如下命令禁止该功能:
首先我们需要搭建一个UDP服务器,有两种方式:
因为 NB-IoT 模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在linux服务器上运行一个Python编写的UDP测试服务器:
这里的Python程序如下:
运行:
效果如下:
使用AT命令连接UDP服务器,首先需要创建一个 UDP 类型的 Socket,创建socket的指令如下:
其中第一个参数是socket类型,DGRAM表示UDP,STREAM表示UDP;第二个参数表示协议类型,UDP 为 17, UDP 为 6,最后一个参数指定socket使用的本地端口,如果为0则表示随机分配。
所以创建UDP socket的示例如下:
指令:
其中第一个参数是由 AT+NSOCR 返回的 Socket 编号,第二个参数是UDP服务器ip地址,也可以使用域名,第三个参数是UDP服务器开启监听的端口,第四个是发送数据的长度,最后一个是要发送的十六进制数据。
示例:
发送之后,在服务器端也可以看到:
模组发送数据到服务器后,服务器会自动发送消息,模组会打印出收到信息的提示:
该信息表示编号为1的socket收到了18字节的数据。
可以使用如下命令查看收到的数据,第一个参数是socket编号,第二个参数是查询的数据长度:
查看刚刚收到的数据:
其中收到的数据为倒数第二个参数,是十六进制格式:
使用 在线工具 将数据转化为字符串即可:
通信完毕之后,可以使用下面的命令关闭最开始创建的socket:
示例:
㈢ python AT命令求助
我只在Windows下用过pyserial,和你用的模块略微有差别。
从code看,你用write方法发送字符以后,没有回车(发送 \n 到串口),或许是因为这个,“AT+CGMI”其实没有执行,所以也读不出结果。
㈣ LiteOS通信模组教程02-AT指令玩转2G通信
小熊派开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。
指令:AT
功能:测试AT指令功能是否正常
示例:
指令:AT+CPIN?
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例:
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例:
指令:AT+CREG?
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
指令:AT+CERGE?
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
指令:AT+QIFGTCNT=0
功能:配置当前场景
示例:
指令:AT+QICSGP=1, "CMNET"
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
指令:AT+QIMODE=0
功能:设置数据传输模式,0表示非透传模式,1表示透传模式
示例:
指令:AT+QIDEACT
功能:在激活GPRS场景之前先关闭GPRS场景,确保连接正确
示例:
指令:AT+QIREGAPP
功能:启动任务并设置接入点APN、用户名和密码
示例:
指令:AT+QIACT
功能:激活移动场景
示例:
指令:AT+QILOCIP
功能:查看模组获取的IP地址
示例:
首先我们需要搭建一个TCP服务器,有两种方式:
因为M26模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器:
这里的Python程序如下:
运行:
效果如下:
查询ip地址:
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口:
示例:
连接之后,在服务器端也可以看到:
模组连接到服务器后,服务器会自动发送消息,模组会打印出收到的信息:
使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回 > 后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:
示例:
发送成功看服务器上运行的TCP服务器是否收到:
通信完毕之后,可以使用下面的命令关闭TCP连接:
示例:
㈤ Python 最重要的库都有哪些
第一、NumPy
NumPy是Numerical
Python的简写,是Python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy还包括其他内容:
①快速、高效的多维数组对象ndarray
②基于元素的数组计算或数组间数学操作函数
③用于读写硬盘中基于数组的数据集的工具
④线性代数操作、傅里叶变换以及随机数生成
除了NumPy赋予Python的快速数组处理能力之外,NumPy的另一个主要用途是在算法和库之间作为数据传递的数据容器。对于数值数据,NumPy数组能够比Python内建数据结构更为高效地存储和操作数据。
第二、pandas
pandas提供了高级数据结构和函数,这些数据结构和函数的设计使得利用结构化、表格化数据的工作快速、简单、有表现力。它出现于2010年,帮助Python成为强大、高效的数据分析环境。常用的pandas对象是DataFrame,它是用于实现表格化、面向列、使用行列标签的数据结构;以及Series,一种一维标签数组对象。
pandas将表格和关系型数据库的灵活数据操作能力与Numpy的高性能数组计算的理念相结合。它提供复杂的索引函数,使得数据的重组、切块、切片、聚合、子集选择更为简单。由于数据操作、预处理、清洗在数据分析中是重要的技能,pandas将是重要主题。
第三、matplotlib
matplotlib是最流行的用于制图及其他二维数据可视化的Python库,它由John D.
Hunter创建,目前由一个大型开发者团队维护。matplotlib被设计为适合出版的制图工具。
对于Python编程者来说也有其他可视化库,但matplotlib依然使用最为广泛,并且与生态系统的其他库良好整合。
第四、IPython
IPython项目开始于2001年,由Fernando
Pérez发起,旨在开发一个更具交互性的Python解释器。在过去的16年中,它成为Python数据技术栈中最重要的工具之一。
尽管它本身并不提供任何计算或数据分析工具,它的设计侧重于在交互计算和软件开发两方面将生产力最大化。它使用了一种执行-探索工作流来替代其他语言中典型的编辑-编译-运行工作流。它还提供了针对操作系统命令行和文件系统的易用接口。由于数据分析编码工作包含大量的探索、试验、试错和遍历,IPython可以使你更快速地完成工作。
第五、SciPy
SciPy是科学计算领域针对不同标准问题域的包集合。以下是SciPy中包含的一些包:
①scipy.integrate数值积分例程和微分方程求解器
②scipy.linalg线性代数例程和基于numpy.linalg的矩阵分解
③scipy.optimize函数优化器和求根算法
④scipy.signal信号处理工具
⑤scipy.sparse稀疏矩阵与稀疏线性系统求解器
SciPy与Numpy一起为很多传统科学计算应用提供了一个合理、完整、成熟的计算基础。
第六、scikit-learn
scikit-learn项目诞生于2010年,目前已成为Python编程者首选的机器学习工具包。仅仅七年,scikit-learn就拥有了全世界1500位代码贡献者。其中包含以下子模块:
①分类:SVM、最近邻、随机森林、逻辑回归等
②回归:Lasso、岭回归等
③聚类:K-means、谱聚类等
④降维:PCA、特征选择、矩阵分解等
⑤模型选择:网格搜索、交叉验证、指标矩阵
⑥预处理:特征提取、正态化
scikit-learn与pandas、statsmodels、IPython一起使Python成为高效的数据科学编程语言。
㈥ python获取给手机发送AT命令如何获取返回值
安装一个pyseries包。 然后找一个AT标准的命令集。似乎有人封装好了。我以前见过。
然后剩下的事情就超 简单了。 测试通过就可以用。
好象以前是用这个做运维时,给运维人员发短信用的。这个功能十几年前就成熟了。现在都应该 有现成的python模块。
㈦ 如何使用Python让某段程序固定在每天早上八点钟开始运行
你在windows下根本不用这么麻烦:
首先,比如你的程序名字是 test.py
如果你想调用某个具体函数,就自己写一个的文件,比如
import spider
spider.go()
然后,用系统at命令指定几点几分或者每个星期几或者每个月的第几个星期几等执行某个程序。在执行程序的地方写到:
c:\python25\python.exe myfile.py
这样就可以了。
===================================
如果你觉得简单的方法不好或者你要在其它系统下也可以用,那就这样:
首先,写一串代码:大致意思如下,把_换成空格
import os,time,spider
while True:
__time.sleep(1)
__if time.ctime()[12:19]=="8:00:00" or time.ctime()[12:19]=="20:00:00" :
____spider.go() #举个例子
然后,开机就执行这个文件。windows下可以把文件存为pyw然后开机启动这样没有黑框。其它系统你爱怎么样都可以了(mac没用过不知道)
㈧ linux at 如何定时执行python脚本
先写一个shell脚本,假设为 /root/index.sh > 'python XXX.py'
再使用命令 at <?> -f /root/index.sh
<?>部分查看 at 指令用法补充,可参考http://www.cnblogs.com/peida/archive/2013/01/05/2846152.html
完成
㈨ 在cmd里面打什么命令查看python自带库谢谢。
用命令查看python的库的方法:可以在命令行下运行【$pydoc moles】命令查看。还可以在交互式解释器中运行【help("moles")】命令查看。
一、命令行下使用pydoc命令
(推荐教程:Python入门教程)
在命令行下运行$ pydoc moles即可查看。
二、在python交互解释器中使用help()查看
在交互式解释器中输入>>> help("moles")即可,效果跟在命令行下输入$ pydoc moles是一样的。
三、在python交互是解释器下导入sys模块查看
python的sys模块也是可以用来查看模块信息的。
1
2
import sys
sys.moles.keys()
四、命令行下使用pip查看
如果你使用的是pip来作为你的python包管理器的话,可以在命令行下直接运行pipfreeze或者pipfreeze或者 pip list来查看安装包的信息,当然其它的包管理器也有类似的功能,同时,你也可以在python交互式解释器中导入pip模块来查看包信息。
用命令查看python的库的方法:可以在命令行下运行【$pydoc moles】命令查看。还可以在交互式解释器中运行【help("moles")】命令查看。