zoukankan      html  css  js  c++  java
  • python文件操作

    批量给文件改后缀名

    爬取的文件全部后缀为xlsx,结果有的文件打不开,原因是这些文件是xls格式,因此将xlsx统一改为xls

    import os
    
    root = r'D:ondtest'
    
    with os.scandir(r'D:ondtest') as files:
        for file in files:
            if file.name.endswith('.xlsx'):
                src = file.name
                dst = file.name.split('.')[0] + ".xls"
                try:
                    os.chdir(root)  # os.rename默认查找的路径是该程序所在的文件夹,如果查找的文件与程序不在一个文件夹,需要指定绝对路径
                    os.rename(src, dst)  # 否则报错: [WinError 2] 系统找不到指定的文件
                except Exception as e:
                    print(e)
                    print("rename[%s] failed" % (src))
                else:
                    print("rename[%s] success" % (src))
                print("END")
    View Code

    批量将xls转成xlsx

    openpyxl不支持xls文件的打开,因此批量将xls文件打开后统一保存成xlsx格式

    import os
    import os.path
    import win32com.client as win32  # pip install pywin32
    
    ## 根目录
    rootdir = r'D:ondtest'
    # 三个参数:父目录;所有文件夹名(不含路径);所有文件名
    for parent, dirnames, filenames in os.walk(rootdir):
        for fn in filenames:
            filedir = os.path.join(parent, fn)
            print(filedir)
    
            excel = win32.gencache.EnsureDispatch('Excel.Application')
            wb = excel.Workbooks.Open(filedir)
            # xlsx: FileFormat=51
            # xls:  FileFormat=56,
            # 后缀名的大小写不通配,需按实际修改:xls,或XLS
            wb.SaveAs(filedir.replace('xls', 'xlsx'), FileFormat=51)  # 我这里原文件是大写
            wb.Close()                                 
            excel.Application.Quit()
    View Code

    批量将同一类型表格导入到一张总表中,按时间作分页

    type_list = ['0101', '0102', '0201', '0203', '0300', '0301', '0401']
    root = 'D:\bondtest\'
    
    for type in type_list:
        path = root + "汇总" + type + ".xlsx"
        wbt = Workbook()
        wbt.save(path)
        with os.scandir(root) as files:
            for file in files:
                if file.name[6:10] == type:
                    print(file.name)
                    wb = load_workbook(file.name)
                    wb2 = load_workbook(path)
                    ws2 = wb2.create_sheet(file.name[:6])
                    sheet1 = wb['page']
                    sheet2 = wb2[ws2.title]
                    for i,row in enumerate(sheet1.iter_rows()):
                        for j,cell in enumerate(row):
                            sheet2.cell(row=i+1, column=j+1, value=cell.value)
                    wb.close()
                    wb2.save(path)#保存数据
                    wb2.close()
    View Code
     
  • 相关阅读:
    【微信开发】【Asp.net MVC】-- 微信分享功能
    利用JS-SDK微信分享接口调用(后端.NET)
    C# ThreadPool类(线程池)
    C#多线程--线程池(ThreadPool)
    MongoDB允许其它IP地址访问
    解决ASP.Net第一次访问慢的处理(IIS8)
    GitLab版本管理
    基于句子嵌入的无监督文本摘要(附代码实现)zt
    简约机器学习复习笔记/速查手册(缺点是2018年1月的旧了)
    CRF学习的文章
  • 原文地址:https://www.cnblogs.com/ttrrpp/p/14111976.html
Copyright © 2011-2022 走看看