Python编写的读取html文件名,自动编写SQL插入语句脚本
2014-05-04 15:03
701 查看
最近,在宝马出差,给用户编写测试数据,数据html编写完成后,还要按规则把其写成SQL插入语句,录入数据库,一次上百条数据,很是麻烦,写了个小脚本玩玩,也方便自己工作。
我这本是在Python3.3下编写的,测试通过。后来为了加上窗体,又改用Python2.7 ,只要不加上窗体,在两者下都可以执行,测过的,很蛋疼吧,没办法,目前Python3.3还不支持图形化界面,也有可能是我个人没发掘到,大家要是了解的话,告知一下,感激不尽。
好了,下面是我的代码,我也是刚学的可能会有不严谨的地方,程序还不是很完善,但是可以用的。
# !/usr/bin/env python
# coding=utf-8
import os
import Tkinter
from tkMessageBox import *
这些是头文件,上边是字符编码问题,没有# coding=utf-8 貌似保存中文老弹出警告窗体,当然这是在2.7环境下,3.3没这个问题,但不管哪个加上就没问题;
下边是引入窗体文件的,对了Python图形化界面需要wXPython,下载时注意版本哦。
"""-------------------函数:处理中文乱码--------------"""
def chineseGarbled (str):
if isinstance(str, unicode):
#ttt=u"中文"
str = str.encode('gb2312')
else:
#ttt="中文"
str = str.decode('utf-8').encode('gb2312')
return str
"""------------------------------------------------"""转换中文乱码的函数不解释直接拿去用就行,应该没有问题的,3.3没这么多事,用了2.7我才加上的。
"""-------------------函数:解析路径(当前仅解决‘/t’转义问题)--------------"""
def resolvePatch (path):
mList = list(path)
path = ""
for a in mList :
if a == '\t' :
a = '\\t'
if a == '\\' :
a = a + '\\'
path = path + a
print(path)
return path
"""----------------------------------------------------"""解析你传入文件的路径,什么 \t,\s等等一大堆转义字符,要不然你的路径就会出错了,因为给自己用,写的不全,大家可以自己补补,这个函数也可以换,毕竟我这是随意写的。
"""-------------------函数:sql语句写入脚本--------------"""
def writeSql (FirstPath,SecondPath,WritePath):
fList = os.listdir(FirstPath)
for str in fList :
path = SecondPath+'\\'+str
htmlList = os.listdir(path)
fileHandle = open(WritePath,'a')
for s in htmlList :
if (s[len(s)-5:]=='.html' or s[len(s)-5:]=='.HTML') :
s = s[:-6]
s2 = s[-21:-18]
#nList = s.split('_0_')
nList = s.split(s2)
sql = "insert into ncmtest(name,card) values('"+nList[0]+"','"+nList[1]+"');\n"
fileHandle.write(sql)
fileHandle.write('\n')
fileHandle.close()
"""未完成,当前只应对双文件夹"""
def inputSql (path,WritePath):
htmlList = os.listdir(path)
fileHandle = open(WritePath,'a')
for s in htmlList :
if (s[len(s)-5:]=='.html' or s[len(s)-5:]=='.HTML') :
s = s[:-6]
nList = s.split('_0_')
sql = "insert into ncmtest(name,card) values('"+nList[0]+"','"+nList[1]+"');\n"
fileHandle.write(sql)
fileHandle.write('\n')
fileHandle.close()
"""---------------------------------------------------"""
"""--------------函数:读取非文件夹的文件(当前文件格式限定为html,且文件夹中不能有除html外的其他文件)--------------"""
def getFile(str):
return str
"""-------------------------------------------------------------------------------------------------------"""
这个没写全,当前支持上文件夹读取,例如D:\TestData\PBOC测试数据\卢云海_0_532526199001113830_.html 这种情况,嘿嘿,毕竟给自己用,所以没考虑那么多,大家可以自己加点。文件读取解析规则是按我自己用到的规则弄得,因人而异,自己修改吧
""" ----------------------------窗体----------------------- """
def input_click():
FirstPath = e1.get()
WritePath = e2.get()
print(FirstPath)
print(WritePath)
FirstPath = resolvePatch(FirstPath)
WritePath = resolvePatch(WritePath)
SecondPath = FirstPath
FirstPath = chineseGarbled (FirstPath)
SecondPath = chineseGarbled (SecondPath)
WritePath = chineseGarbled (WritePath)
writeSql (FirstPath,SecondPath,WritePath)
showinfo('温馨提示','操作完成,谢谢使用!')
def cancel_click():
e1.delete(0, Tkinter.END)
e2.delete(0, Tkinter.END)
showinfo('温馨提示','重置成功,请继续操作!')
root=Tkinter.Tk()
lb_title1=Tkinter.Label(root,text='被扫描文件路径:',width=40,height=2)
lb_title1.pack()
e1 = Tkinter.Entry()
e1.pack(padx = 10, pady = 10, fill = Tkinter.X)
lb_title2=Tkinter.Label(root,text='写入文件路径:',width=40,height=2)
lb_title2.pack()
e2 = Tkinter.Entry()
e2.pack(padx = 10, pady = 10, fill = Tkinter.X)
btn_Login=Tkinter.Button(root,text='执行脚本',command=input_click)
btn_Login.pack()
btn_Cancel=Tkinter.Button(root,text='重 置',command=cancel_click)
btn_Cancel.pack()
root.mainloop()
"""---------------------------------------------------------"""
最后就是我们的窗体啦,我也是刚学的,写的不好请见谅哦。
我这本是在Python3.3下编写的,测试通过。后来为了加上窗体,又改用Python2.7 ,只要不加上窗体,在两者下都可以执行,测过的,很蛋疼吧,没办法,目前Python3.3还不支持图形化界面,也有可能是我个人没发掘到,大家要是了解的话,告知一下,感激不尽。
好了,下面是我的代码,我也是刚学的可能会有不严谨的地方,程序还不是很完善,但是可以用的。
# !/usr/bin/env python
# coding=utf-8
import os
import Tkinter
from tkMessageBox import *
这些是头文件,上边是字符编码问题,没有# coding=utf-8 貌似保存中文老弹出警告窗体,当然这是在2.7环境下,3.3没这个问题,但不管哪个加上就没问题;
下边是引入窗体文件的,对了Python图形化界面需要wXPython,下载时注意版本哦。
"""-------------------函数:处理中文乱码--------------"""
def chineseGarbled (str):
if isinstance(str, unicode):
#ttt=u"中文"
str = str.encode('gb2312')
else:
#ttt="中文"
str = str.decode('utf-8').encode('gb2312')
return str
"""------------------------------------------------"""转换中文乱码的函数不解释直接拿去用就行,应该没有问题的,3.3没这么多事,用了2.7我才加上的。
"""-------------------函数:解析路径(当前仅解决‘/t’转义问题)--------------"""
def resolvePatch (path):
mList = list(path)
path = ""
for a in mList :
if a == '\t' :
a = '\\t'
if a == '\\' :
a = a + '\\'
path = path + a
print(path)
return path
"""----------------------------------------------------"""解析你传入文件的路径,什么 \t,\s等等一大堆转义字符,要不然你的路径就会出错了,因为给自己用,写的不全,大家可以自己补补,这个函数也可以换,毕竟我这是随意写的。
"""-------------------函数:sql语句写入脚本--------------"""
def writeSql (FirstPath,SecondPath,WritePath):
fList = os.listdir(FirstPath)
for str in fList :
path = SecondPath+'\\'+str
htmlList = os.listdir(path)
fileHandle = open(WritePath,'a')
for s in htmlList :
if (s[len(s)-5:]=='.html' or s[len(s)-5:]=='.HTML') :
s = s[:-6]
s2 = s[-21:-18]
#nList = s.split('_0_')
nList = s.split(s2)
sql = "insert into ncmtest(name,card) values('"+nList[0]+"','"+nList[1]+"');\n"
fileHandle.write(sql)
fileHandle.write('\n')
fileHandle.close()
"""未完成,当前只应对双文件夹"""
def inputSql (path,WritePath):
htmlList = os.listdir(path)
fileHandle = open(WritePath,'a')
for s in htmlList :
if (s[len(s)-5:]=='.html' or s[len(s)-5:]=='.HTML') :
s = s[:-6]
nList = s.split('_0_')
sql = "insert into ncmtest(name,card) values('"+nList[0]+"','"+nList[1]+"');\n"
fileHandle.write(sql)
fileHandle.write('\n')
fileHandle.close()
"""---------------------------------------------------"""
"""--------------函数:读取非文件夹的文件(当前文件格式限定为html,且文件夹中不能有除html外的其他文件)--------------"""
def getFile(str):
return str
"""-------------------------------------------------------------------------------------------------------"""
这个没写全,当前支持上文件夹读取,例如D:\TestData\PBOC测试数据\卢云海_0_532526199001113830_.html 这种情况,嘿嘿,毕竟给自己用,所以没考虑那么多,大家可以自己加点。文件读取解析规则是按我自己用到的规则弄得,因人而异,自己修改吧
""" ----------------------------窗体----------------------- """
def input_click():
FirstPath = e1.get()
WritePath = e2.get()
print(FirstPath)
print(WritePath)
FirstPath = resolvePatch(FirstPath)
WritePath = resolvePatch(WritePath)
SecondPath = FirstPath
FirstPath = chineseGarbled (FirstPath)
SecondPath = chineseGarbled (SecondPath)
WritePath = chineseGarbled (WritePath)
writeSql (FirstPath,SecondPath,WritePath)
showinfo('温馨提示','操作完成,谢谢使用!')
def cancel_click():
e1.delete(0, Tkinter.END)
e2.delete(0, Tkinter.END)
showinfo('温馨提示','重置成功,请继续操作!')
root=Tkinter.Tk()
lb_title1=Tkinter.Label(root,text='被扫描文件路径:',width=40,height=2)
lb_title1.pack()
e1 = Tkinter.Entry()
e1.pack(padx = 10, pady = 10, fill = Tkinter.X)
lb_title2=Tkinter.Label(root,text='写入文件路径:',width=40,height=2)
lb_title2.pack()
e2 = Tkinter.Entry()
e2.pack(padx = 10, pady = 10, fill = Tkinter.X)
btn_Login=Tkinter.Button(root,text='执行脚本',command=input_click)
btn_Login.pack()
btn_Cancel=Tkinter.Button(root,text='重 置',command=cancel_click)
btn_Cancel.pack()
root.mainloop()
"""---------------------------------------------------------"""
最后就是我们的窗体啦,我也是刚学的,写的不好请见谅哦。
相关文章推荐
- python脚本批量生成50000条插入数据的sql语句
- python脚本随笔:实现生成插入表的sql语句
- Oracle带参数的sql语句脚本 转 Oracle存储过程 ---Python实现
- 通过shell脚本随机插入sql语句
- 一个自动生成插入与更新SQL语句的小类
- Oracle数据库案例整理-执行Oracle脚本失败或异常-使用SQL语句插入中文后数据库中显示乱码
- 把SQL数据库生成脚本插入的 SQL语句
- 好用生成插入语句的SQL脚本
- 使用sql语句创建修改SQL Server标识列(即自动增长列)--https://www.cnblogs.com/skylaugh/archive/2016/04/03/5350615.html
- 记一次SQL语句编写不规范引起的小问题(where条件varchar自动转number)
- 可以把Access数据库自动转化成Sql的脚本编写工具
- 通过shell脚本随机插入sql语句
- 实体类自动生成SQL插入执行语句
- 编写一个shall脚本,采用case语句,自动解压“.tar.gz”或“.tar.bz2”格式文件
- vim编写python脚本自动补全插件
- python读取txt并将数据插入到sql中
- 用Python编写脚本进行软件自动安装配置
- SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号
- 用Python编写自动下载网络小说的脚本
- SQL Insert into 语句插入后返回新插入的自动增长ID