首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python自动化办公操作:mysql存储、时间、遍历文件夹、拼接地址、读取pdf、word、测试代码运算速度2021.8.2

python自动化办公操作:mysql存储、时间、遍历文件夹、拼接地址、读取pdf、word、测试代码运算速度2021.8.2

作者头像
用户7138673
发布2022-09-22 08:14:19
发布2022-09-22 08:14:19
8680
举报
文章被收录于专栏:大大的小数据大大的小数据

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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大大的小数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档