美文网首页
Python ☞ day 10

Python ☞ day 10

作者: 浪子彦卿L | 来源:发表于2018-05-17 16:58 被阅读0次

    Python学习笔记之 自动化办公与鼠标键盘模拟

    读写csv文件
    • 读csv文件
    import csv
    
    def readCsv(path):
        infoList = []
        with open(path, "r") as f:
            allFileInfo = csv.reader(f)
            for row in allFileInfo:
                infoList.append(row)
        return infoList
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\2、读写csv文件\000001.csv"
    info = readCsv(path)
    
    • 写csv文件
    import csv
    
    def writeCsv(path, data):
        with open(path, "w") as f:
            writer = csv.writer(f)
            for rowData in data:
                print("rowData = ", rowData)
                writer.writerow(rowData)
    
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\2、读写csv文件\000002.csv"
    writeCsv(path, [["1","2","3"],["4","5","6"],["7","8","9"]])
    
    读取PDF文件
    import sys
    import importlib
    importlib.reload(sys)
    
    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal, LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
    def readPDF(path, toPath):
        #以二进制形式打开pdf文件
        f = open(path, "rb")
    
        #创建一个pdf文档分析器
        parser = PDFParser(f)
        #创建pdf文档
        pdfFile = PDFDocument()
        #链接分析器与文档对象
        parser.set_document(pdfFile)
        pdfFile.set_parser(parser)
        #提供初始化密码
        pdfFile.initialize()
        #检测文档是否提供txt转换
        if not pdfFile.is_extractable:
            raise PDFTextExtractionNotAllowed
        else:
            #解析数据
            #数据管理器
            manager = PDFResourceManager()
            #创建一个PDF设备对象
            laparams = LAParams()
            device = PDFPageAggregator(manager, laparams=laparams)
            #解释器对象
            interpreter = PDFPageInterpreter(manager, device)
            #开始循环处理,每次处理一页
            for page in pdfFile.get_pages():
                interpreter.process_page(page)
                layout = device.get_result()
                for x in layout:
                    if (isinstance(x, LTTextBoxHorizontal)):
                        with open(toPath, "a") as f:
                            str = x.get_text()
                            #print(str)
                            f.write(str+"\n")
    
    
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\3、读取PDF文件\sunck.pdf"
    toPath = r"C:\Users\xlg\Desktop\Python-1704\day15\3、读取PDF文件\n.txt"
    readPDF(path, toPath)
    
    读写word文件
    • 读取doc和docx文件
    import win32com
    import win32com.client
    
    def readWordFile(path):
        #调用系统word功能,可以处理doc和docx两种文件
        mw = win32com.client.Dispatch("Word.Application")
        #打开文件
        doc = mw.Documents.Open(path)
        for paragraph in doc.Paragraphs:
            line = paragraph.Range.Text
            print(line)
        #关闭文件
        doc.Close()
        #退出word
        mw.Quit()
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\4、word自动化办公\sunck.doc"
    readWordFile(path)
    
    • 读取doc和docx文件并写入其他文件
    import win32com
    import win32com.client
    
    def readWordFileToOtherFile(path, toPath):
        mw = win32com.client.Dispatch("Word.Application")
        doc = mw.Documents.Open(path)
    
        #将word的数据保存到另一个文件
        doc.SaveAs(toPath, 2)#2表示为txt文件
    
        doc.Close()
        mw.Quit()
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\4、word自动化办公\sunck.doc"
    toPath = r"C:\Users\xlg\Desktop\Python-1704\day15\4、word自动化办公\a.txt"
    readWordFileToOtherFile(path, toPath)
    
    • 创建word文件
    import win32com
    import win32com.client
    import os
    
    def makeWordFile(path, name):
        word = win32com.client.Dispatch("Word.Application")
        #让文档可见
        word.Visible = True
    
        #创建文档
        doc = word.Documents.Add()
    
        #写内容
        #从头开始写
        r = doc.Range(0, 0)
        r.InsertAfter("亲爱的"+ name + "\n")
        r.InsertAfter("        我想你……\n")
    
        #存储文件
        doc.SaveAs(path)
        #关闭文件
        doc.Close()
        #退出word
        word.Quit()
    
    
    
    
    
    names = ["张三", "李四", "王五"]
    for name in names:
        path = os.path.join(os.getcwd(), name)
        makeWordFile(path, name)
    
    读写Excel文件
    • 读取xlsx文件
    #  xlsx   xls
    # openpyxl  ->  xlsx
    
    from openpyxl.reader.excel import load_workbook
    
    def readXlsxFile(path):
        #打开文件
        file = load_workbook(filename=path)
        #所有表格的名称
        #print(file.get_sheet_names())
        sheets = file.get_sheet_names()
    
        #拿出一个表格
        sheet = file.get_sheet_by_name(sheets[0])
        #最大行数
        #print(sheet.max_row)
        #最大列数
        #print(sheet.max_column)
        #表名
        #print(sheet.title)
    
    
    
        for lineNum in range(1, sheet.max_row + 1):
            #print(lineNum)
            lineList = []
            #print(sheet.max_row, sheet.max_column)
            for columnNum in range(1, sheet.max_column + 1):
                #拿数据
                value = sheet.cell(row=lineNum, column=columnNum).value
                #if value != None:
                lineList.append(value)
    
            print(lineList)
    
    
        #读取一张表的数据
    
    #不能处理xls文件
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\5、excel自动化办公\sunck.xlsx"
    readXlsxFile(path)
    
    • 返回整体xlsx数据
    #  xlsx   xls
    # openpyxl  ->  xlsx
    
    from openpyxl.reader.excel import load_workbook
    
    def readXlsxFile(path):
        dic = {}
        file = load_workbook(filename=path)
        sheets = file.get_sheet_names()
        print(len(sheets))
    
        for sheetName in sheets:
            sheet = file.get_sheet_by_name(sheetName)
            #一张表的所有数据
            sheetInfo = []
            for lineNum in range(1, sheet.max_row + 1):
                lineList = []
                for columnNum in range(1, sheet.max_column + 1):
                    value = sheet.cell(row=lineNum, column=columnNum).value
                    lineList.append(value)
                sheetInfo.append(lineList)
    
            #将一张表的数据存到字典
            dic[sheetName] = sheetInfo
        return dic
    
    #不能处理xls文件
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\5、excel自动化办公\sunck.xlsx"
    dic = readXlsxFile(path)
    print(dic["安力博发"])
    print(len(dic))
    
    • 返回xls和xlsx文件内容
    #有序字典
    from collections import OrderedDict
    
    #读取数据
    from pyexcel_xls import get_data
    
    
    def readXlsAndXlsxFile(path):
        dic = OrderedDict()
        #抓取数据
        xdata = get_data(path)
        for sheet in xdata:
            dic[sheet] = xdata[sheet]
        return dic
    
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\5、excel自动化办公\sunck.xls"
    dic = readXlsAndXlsxFile(path)
    print(dic)
    print(len(dic))
    
    • 写入xls文件
    #有序字典
    from collections import OrderedDict
    #写入数据
    from pyexcel_xls import save_data
    
    
    def makeExcelFile(path, data):
        dic = OrderedDict()
        for sheetName, sheetValue in data.items():
            d = {}
            d[sheetName] = sheetValue
            dic.update(d)
    
        save_data(path, dic)
    
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\5、excel自动化办公\b.xls"
    makeExcelFile(path, {"表1":[[1,2,3],[4,5,6],[7,8,9]],
                         "表2": [[11, 22, 33], [44, 55, 66], [77, 88, 99]]})
    
    
    ppt文件
    • 写ppt文件
    import win32com
    import win32com.client
    
    def makePPT(path):
        ppt = win32com.client.Dispatch("PowerPoint.Application")
        ppt.Visible = True
    
        #增加一个文件
        pptFile = ppt.Presentations.Add()
    
        #创建页  参数1为页数(从1开始)  参数2为类型
        page1 = pptFile.Slides.Add(1,1)
        t1 = page1.Shapes[0].TextFrame.TextRange
        t1.Text = "sunck"
        t2 = page1.Shapes[1].TextFrame.TextRange
        t2.Text = "sunck is a good man"
    
        page2 = pptFile.Slides.Add(2, 1)
        t3 = page2.Shapes[0].TextFrame.TextRange
        t3.Text = "kaige"
        t4 = page2.Shapes[1].TextFrame.TextRange
        t4.Text = "kaige is a good man"
    
        page2 = pptFile.Slides.Add(3, 2)
    
        #保存
        pptFile.SaveAs(path)
        pptFile.Close()
        ppt.Quit()
    
    
    
    path = r"C:\Users\xlg\Desktop\Python-1704\day15\6、ppt自动化办公\sunck.ppt"
    makePPT(path)
    
    播放音乐
    import time
    import pygame
    #pip  install  pygame
    
    #音乐路径
    filePath = r"C:\Users\xlg\Desktop\Python-1704\day15\7、播放音乐\res\0.mp3"
    
    #初始化
    pygame.mixer.init()
    #加载音乐
    track = pygame.mixer.music.load(filePath)
    #播放
    pygame.mixer.music.play()
    #
    time.sleep(5)
    #停止
    pygame.mixer.music.stop()
    
    修改桌面背景图片
    #win键+r -> regedit -> HKEY_CURRENT_USER -> Control panel ->Desktop
    
    import win32api
    import win32con
    import win32gui
    
    def setWallPaper(path):
        #打开注册表
        reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
    
        #2 拉伸  0  居中  6  适应  10填充
        win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
        #
    
        #SPIF_SENDWININICHANGE  立即生效
        win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, path, win32con.SPIF_SENDWININICHANGE)
    
    setWallPaper(r"C:\Users\xlg\Desktop\Python-1704\day15\8、修改背景图片\res\6.jpg")
    
    键盘模拟
    import win32con
    import win32api
    import time
    
    '''
    win32api.keybd_event(91,0,0,0)
    time.sleep(0.1)
    win32api.keybd_event(91,0,win32con.KEYEVENTF_KEYUP,0)
    '''
    while True:
        win32api.keybd_event(91, 0, 0, 0)
        time.sleep(0.1)
        win32api.keybd_event(77, 0, 0, 0)
        time.sleep(0.1)
        win32api.keybd_event(77, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(91, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(3)
    
    鼠标模拟
    import win32con
    import win32api
    import time
    
    #设置鼠标的位置
    win32api.SetCursorPos([30, 40])
    time.sleep(0.1)
    
    #鼠标左键按下
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0)
    #鼠标左键抬起
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0)
    

    相关文章

      网友评论

          本文标题:Python ☞ day 10

          本文链接:https://www.haomeiwen.com/subject/lwzbdftx.html