温湿度自动发布系统

Demo: http://www.yeelink.net/devices/3836

这个系统非常简单,一个温湿度传感器(DTH11),一个Arduino主控板(UNO),一个联网的主机(Win7);

55

主机和Arduino可以通过串口或者蓝牙串口连接,主机使用Python脚本发送数据到Yeelink免费云server

Arduino代码: Github

Python脚本: Github

如果使用带wifiArduino主控板,可以直接使用yeelinkArduino SDK; 

如果只上传一个数据,比如只有一个温度,可以直接使用Yeelink的串口工具。

地址:https://github.com/dapingliu

文本文件转入数据库

知道<the art of worldly wisdom>(《智慧书》)吗?里面有300条经典的话。

之前想做个小应用,把每一句话关联到日期,这样用户每天都可以看不同的经典。

因为下载的电子书是文本格式的,怎么转换成数据库格式(sqlite)呢?这是一个挺蠢的简单的办法:

1. 通过Python将文本解析后存储到excel;(这块有现成代码啦)

2. 通过SQLite Database Browser(推荐)或者sqlite administrator导入excel。

有兴趣的可以到这里看到Python代码和转好的<wisdom>sqlite数据库。  https://github.com/neal365/python/tree/master/text2Excel

这个办法并不适用Android的开发,如果要在Android上用,需要先创建sqlite数据库,然后通过java代码将文本解析后存进去,直接导入一个现成的sqlite数据库是不方便的。

批量改文件名

下载了一批视频文件居然都是乱码,播放器还无法播放,一个个改名字太复杂啦

发现这样的场景还是挺多的,搞个PY脚本吧

import os

print "***batch change file name ***"

 

for files in os.walk(os.getcwd()):

    for file_list in files:

        i = 1

        for file_name in file_list:

            if '.avi' in file_name:

                os.system('rename ' + file_name + ' ' + str(i) + '.avi')

                i += 1

Python采集网页数据保存到excel

今天开始整理写过的Python代码,同时共享出来,需要对大家有帮助。

今天共享的是通过Python采集网页上的数据,然后保存到Excel。思路很简单,用urllib读取网页,然后用Py-excel写excel。

import urllib
from xlwt import Workbook
import datetime

def FetchData():
    book = Workbook(encoding='gbk')    #如果采集数据有中文,需要添加这个 
    sheet1 = book.add_sheet('Sheet 2') #表格缓存 

    i = 0
    theday = datetime.date(2009,12,31)
    while i < 100: #这边的场景就是采集100个网页,每个网址都包含日期 
        i += 1
        theday = theday + datetime.timedelta(days = 1)
        print theday
        theday_str = str(theday)
        sheet1.write(i,0,theday_str)  #写表格 
        check_url = r'http://www.xxx.com/index?date=' + theday_str #网页地址
        try:
            checkfile = urllib.urlopen(check_url)  #网页保存为文本文件 
        except Exception,e:
            print e
            return

        type = sys.getfilesystemencoding()
        for line in checkfile:
            line = line.decode("UTF-8").encode(type)     #网页编码为UTF-8 
            date_west = getdata('date_west', line)       #获取特定数据 
            if date_west != False:
                sheet1.write(i,1,date_west)

    book.save('simple.xls')  #保存excel文件 
    print 'finish!'

'if keywords in the line, get data from > to </'
def getdata(keywords, line):
    data = ''
    if keywords in line:
        start = line.find('>',)
        end = line.find('</', start)
        data = line[start+1:end]
        return data
    return False

巿与市

这个字读 fú ,gb2312字库居然没这个字,我说怎么每次遇到“开市”就变成“开?”乱码了呢…

只能说中文字太神奇了。。。

中文入库到mysql,需要用gb2312;

从mysql读中文,需要用utf-8;

为何呢?

盘点曾经用过的Python库

1. wxpython: 开发界面最好用的库;

2. pyserial:   通过pyserial发送at command或者其他串口命令;

3. pywin32: 曾经开发过一个外挂用来自动发鼠标点击、键盘输入命令;

4. Pyinstaller: 用来打包python为exe;

5. Pyaudio: 曾经开发过自动语音阅读应用;

6. ftplib/telnetlib: 曾经开发过向QNX系统自动上传应用、控制应用运行的应用;

7.webbrowser/urllib: 用于创建html格式的测试报告、打开网页、连接update服务器、抓取网站内容等;

8. pyexcel: 读写excel,非常好用!

9. MySQLdb :读写Mysql数据库;

10. Skype4Py: 控制skype自动打电话;

11. socket : IP地址转换;

12. ctypes:  获取IP地址;

 

从Excel导入数据到Mysql的办法

虽然是个简单的问题,中间还是有些波折,尝试了不少办法都失败了,最终自己写Python代码搞定,写下给大家个参考吧。

1. 下载小工具,发现下了几个都没法用;

2. 转换为xml或者cvs,然后通过PhpMyAdmin界面导入:

XML导入时显示格式错误;

CVS导入时开始发现中文显示都是乱码,后来在导入的时候选择编码方式为“gb2312″解决乱码问题;

CVS导入时总是出现”Invalid field count in CSV input on line #”错误,尝试使用”CVS load data”,结果提示“插件不支持!”

折腾来折腾去总是不行,于是考虑使用Python。

3. 结果发现Python只要几行代码就搞定了…

用到2个库,MySQLdb和xlrd,前面的用来操作数据库,后面的用来读Excel,只要把Excel读出来然后用Sql语句写数据库就OK了。

另外在justhost主机,需要在remote mysql中把你的IP地址加入信任列表中,否则出现错误:

pyMysql Error 2003: Can’t connect to MySQL server