Python中利用批处理、powershell和sqlite解决一些问题
因为工作关系以前使用python时要使用批处理和powershell来处理一些事情,所以把这两种方式整理一下,希望能对看这个博客的人有所帮助。
一、python执行批处理
先说有什么用吧,作一个简单的例子,如果你要从远程主机(windows操作系统,并且设置了共享文件夹)利用python批量的往本地复制文件。在这个过程中就能凸显出python调用批处理的作用,在这个过程中,你得判断本地是否与远程主机连接利用net view命令查看连接状态,如果连接直接往下执行python,如果没有你需要用net use来进行连接,从这个例子就能看出来,用python调用批处理也是有用的。当然如果远程主机是linux那么就没必要了,那个还是要靠ssh协议连接,具体什么包就不往下说了,我只了解到还要装VS,也许是错的,有兴趣的自己了解吧,下面说正文,上代码。
import os action = os.popen('ping 127.0.0.1') #执行ping命令 pingResult = action.read() #从stream中读结果 tempPingLine = pingResult.splitlines() #把结果按行存入列表
二、python执行powershell
也是先说有什么用,powershell这个东西功能强大,能干很多东西,就像计算文件hash值,查进程等等,假如我们想验证我复制过来的每个文件是否是最初的,有没有被改动过可以在最初的时候计算文件的hash,将hash值记录下来,如果文件有改过复制到本地后在本地计算出来的hash会和最初的不一样,当然如果没有被改动过,hash值会有变化,有兴趣的可以了解一波,下面说正文,上代码。
import os ps = subprocess.Popen(actionCommand, stdout=subprocess.PIPE) psReturn = ps.stdout.read().decode('windows-1252')
#这里我进行了解码,如果不这样写会出现较多乱码 psReturnList = psReturn.splitlines()
这里有个东西值的我说一说了,第一句的actionCommand这个东西,我查到的是传列表和字符串都可以,但是是有区别的,传列表的话从我查到的资料来看他会自动转成字符串在执行,但是就在这个地方有个问题,如果传了列表的话python文件在idle上运行的好好的,但是用命令行去执行就会闪退,我遇到过这种情况。所以我使用这个的时候,我都是传的字符串。
三、python利用sqlite
sqlite数据库这个就不用说了,存储数据使用的,sqlite小型数据库,安全性稍弱,只能储存一些不重要的数据,比如自己写的UI没有什么重要的业务信息可以用sqlite来储存,有个好处就是文件小只有一个后缀是db的文件,要操作数据库只要有官方的exe文件在命令行窗口就可以操作数据库很方便,如果要存储比较重要的信息最好使用安全性较高的Oracle,闲话莫提,上主要代码:
import sqlite3 conn = sqlite3.connect(r'./analyzeTool.db') cursor = conn.cursor() sql = "select * from table" cursor.execute(sql) resultList = cursor.fetchall() cursor.close() conn.commit() conn.close()
其中resultList = cursor.fetchall()这句得到的结果是一个以元祖为元素的列表比如[('1','2','3'),('2','2','3')]这样。