1、mysql存储
代码语言:javascript复制import pymysql
###########################################################################
#建立一个MySQL连接
conn = pymysql.connect(
host='XXX.XXX.XXX.XXX', #填写自己的mysql地址、帐号、密码
user='root',
passwd='XXXXXXXX',
db='test',
port=3306,
charset='utf8'
)
# 获得游标
cur = conn.cursor()
# 创建插入SQL语句,需要修改表名xxxxx.xxxxxx
query = 'insert into test.20210727gps (yesterday,里程,停留) values (%s, %s, %s)'
# 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题行
values = (yesterday,里程,停留)
# 执行sql语句
try:
cur.execute(query, values)
conn.commit()
except:
# 回滚
conn.rollback()
print('未写入')
# continue
cur.close()# 关闭游标
conn.close()# 关闭数据库
2、mysql默认记录时间戳,数据类型:timestamp默认:CURRENT_TIMESTAMP
3、遍历文件夹
代码语言:javascript复制import os
#导入文件
# path表示路径
path=r"D:下载文件2021.7.8"
# 返回path下所有文件构成的一个list列表
filelist=os.listdir(path)
# 遍历输出每一个文件的名字和类型
count = 0
for 文件名 in filelist:
count =1
if count < 30000:
# 输出指定后缀类型的文件
if(文件名.endswith('.docx')):
print(文件名)
# print(type(文件名))
4、拼接地址
代码语言:javascript复制import os
base_dir = os.path.dirname(__file__)
# 获取当前文件目录
path = os.path.join(base_dir,'6-1.doc')
# 获取文件拼接后的路径
print(path)
5、读取pdf
代码语言:javascript复制import pdfplumber
内容 = ''
with pdfplumber.open("18-1.pdf") as p:
# page = p.pages[2]
for page in p.pages:
# print(page.extract_text())
内容 = page.extract_text()
print(内容)
6、读取word的docx和doc
代码语言:javascript复制import docx
import win32com.client as wc
def 写入SQL(文件名,内容):
pass
def doc读取(文件名):
#doc文件另存为docx
word = wc.Dispatch("Word.Application")
base_dir = os.path.dirname(__file__)
# 获取当前文件目录
path = os.path.join(base_dir,文件名)
# path = os.path.abspath(base_dir,文件名)
# 获取文件拼接后的路径
# print(path)
doc = word.Documents.Open(path)
# doc = word.Documents.Open(原地址)
#上面的地方只能使用完整绝对地址,相对地址找不到文件,且,只能用“\”,不能用“/”,哪怕加了 r 也不行,涉及到将反斜杠看成转义字符。
doc.SaveAs(r"C:\Users\Administrator\Desktop\临时.docx", 12, False, "", True, "", False, False, False, False)#转换后的文件,12代表转换后为docx文件
#doc.SaveAs(r"F:\***\***\appendDoc\***.docx", 12)#或直接简写
#注意SaveAs会打开保存后的文件,有时可能看不到,但后台一定是打开的
sleep(3)
doc.Close()
sleep(3)
word.Quit()
# pythoncom.CoUninitialize()
path = "C:\Users\Administrator\Desktop\临时.docx"
document = docx.Document(path)
# document = docx.Document(文件名)
内容 = ''
for paragraph in document.paragraphs:
内容 = paragraph.text 'n'
# 遍历所有表格
for table in document.tables:
# print ('----table------')
for row in table.rows: # 遍历表格的所有行
# 遍历所有行的所有单元格内容
for cell in row.cells:
内容 = cell.text 'n'
# print(内容)
print(len(内容))
写入SQL(文件名,内容)
# return 内容
代码语言:javascript复制def docx读取(文件名):
document = docx.Document(文件名)
内容 = ''
for paragraph in document.paragraphs:
# print(paragraph.text)
# print(paragraph.text)
# print(type(paragraph.text))
内容 = paragraph.text 'n'
# print(内容)
# print(len(内容))
# print(文件名)
# 遍历所有表格
for table in document.tables:
# print ('----table------')
for row in table.rows: # 遍历表格的所有行
# 按原格式输出数据
# row_str = 't'.join([cell.text for cell in row.cells])
# print(row_str)
# 遍历所有行的所有单元格内容
for cell in row.cells:
# print (cell.text, 't')
内容 = cell.text 'n'
# print(内容)
print(len(内容))
写入SQL(文件名,内容)
# return 内容
6、测试代码运算速度
方法1:print方法
代码语言:javascript复制import time
start_time=time.time() #开始时间
end_time=time.time() #结束时间
print("time:%d" % (end_time-start_time)) #结束时间-开始时间
print("time:%.4f" % (start_time-end_time))
方法2:装饰器方法
代码语言:javascript复制import time
# 装饰器,计算程序运行时间
def start_time(func):
def wrapper(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
print(func.__name__, time.time() - start)
return res
return wrapper
# 使用 append 和 join 实现连续字符串拼接
@start_time
def test_1(frequency, string):
s = []
for i in range(frequency):
s.append(string)
return ''.join(s)
# 使用 = 实现连续字符串拼接
@start_time
def test_2(frequency, string):
s = ''
for i in range(frequency):
s = string
return s
name = 'P'
for i in range(25):
print('n数据量为2的{}次方'.format(i))
f = 2 ** i
test_1(f, name)
test_2(f, name)