Python ☞ day 10

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)