日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python基础学习之python操作PDF文件、发送邮件添加附件10

發布時間:2023/12/31 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础学习之python操作PDF文件、发送邮件添加附件10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、作業練習

寫一個登錄注冊系統,能夠實現用戶的注冊、登錄。
用戶的賬號信息寫入后綴名為xlsx的文件中,
A、B兩列分別用來保存賬號、密碼,兩列的列名為賬號、密碼即可。
登錄時從文件中讀取已存在賬號密碼,注冊時新增賬號密碼。

""" import os from openpyxl import Workbook, load_workbook""" os模塊為多操作系統的訪問提供了相關功能的支持,涉及對文件相關操作、shell命令行操作、 CPU等硬件相關信息的獲取等等一系列和操作系統相關的操作。 """ # os.path.isfile(路徑):判斷路徑指定文件是否存在,返回True或False # os.path.isdir(路徑):判斷路徑指定文件夾是否存在,返回True或False # os.path.exists(路徑):判斷路徑指定的文件或文件夾是否存在,返回True或Falseresult = input('請輸入您的選擇(登錄或注冊):')# 創建或加載文件 filePath = r'用戶賬號信息.xlsx' if not os.path.isfile(filePath):# 如果文件不存在,創建,寫入必要信息wb = Workbook()# 切換進工作表sheet1 = wb['Sheet']# 寫入列名sheet1.cell(1, 1).value = '賬號'sheet1.cell(1, 2).value = '密碼' else:wb = load_workbook(filePath)ws = wb['Sheet'] # 查看文件中信息的行數 rows = ws.max_row # 登錄 if result == "登錄":userName = input('請輸入要登錄的賬號:')password = input('請輸入密碼:')for row in range(2, rows + 1):if ws.cell(row, 1).value == userName and ws.cell(row, 2).value == password:print('登陸成功')breakelse:print('用戶名不存在或密碼輸入錯誤')# 注冊 elif result == '注冊':while True:userName = input('請輸入要注冊的賬號:')password = input('請輸入密碼:')for row in range(2, rows + 1):if ws.cell(row, 1).value == userName:print('您輸入的賬號已經被注冊,請重新輸入!')breakelse:ws.cell(rows + 1, 1).value = userNamews.cell(rows + 1, 2).value = passwordwb.save(filePath)print('注冊成功')breakwb.save(filePath)

二、使用python發送郵件時添加附件

import smtplib# 1.發送人賬號 sendAddress = 'xxxxxx@qq.com' # 2.發送人授權碼(郵箱中的授權碼等同于密碼) password = 'xxxxxxx' # 3.連通服務器 # 465端口就是發送郵件的端口 server = smtplib.SMTP_SSL('smtp.qq.com', 465) print(server) # 4.登錄 loginResult = server.login(sendAddress, password) print(loginResult) # (235, b'Authentication successful') # 235響應成功狀態碼# 構建能夠添加附件的郵件 from email.mime.text import MIMEText # 使用MIMEMultipart添加附件 from email.mime.multipart import MIMEMultipart# 1.定義一個可以添加正文和附件的郵件消息對象 # msg是信息message的縮寫 msg = MIMEMultipart() # 構建發件人、收件人、郵件主題等。 msg['From'] = '名<xxxxxx0866@qq.com>' msg['To'] = '張三<xxxxx@qq.com>;李四<xxxx@qq.com>' msg['Subject'] = '生活愉快'# 構建正文 conten = """ NihOn你好你好"""# 添加正文 # 使用attach()向能夠添加多組件的MIMEMultipart中添加郵件組成部分 msg.attach(MIMEText(conten, 'plain', 'UTF-8'))# 添加附件 # 先將附件使用二進制形式(字節)讀取,再使用MIMEText方法進行規范化 # base64:最常見的字節傳輸方式 attachment_1 = MIMEText(open('1.jpg', 'rb').read(), 'base64', 'utf-8') # 告知瀏覽器或郵箱服務器這是字節流 attachment_1['Content-Type'] = 'application/octet-stream'# 告知瀏覽器或郵件服務器這是一個名字叫做xxx的郵件附件 # 這個名字不要出現中文,不太郵箱對待中文的方式不一樣 attachment_1['Content-Disposition'] = 'attachment;filename="1.jpg"' msg.attach(attachment_1)attachment_2 = MIMEText(open('背影.jpg', 'rb').read(), 'base64', 'utf-8') attachment_2['Content-Type'] = 'application/octet-stream' attachment_2['Content-Disposition'] = 'attachment;filename="list.jpg"' msg.attach(attachment_2) # 發送郵件 To = ['xxxxxxx@qq.com', 'xxxxxxx@qq.com'] server.sendmail(sendAddress, To, msg.as_string()) print('發送成功')

三、使用python暴力破解密碼

如何使用python暴力破解“密碼”。
一、“密碼”破解應用
python破解wifi密碼、
拿到一個有密碼的壓縮包,但是不知道壓縮包密碼,可以嘗試使用python破解
黑客破解賬號密碼,也可以使用python進行暴力破解等等

暴力破解:窮舉法

二、“密碼”的組合
數字、字母、標點符號:
在ASCII碼表中數字、字母、標點符號組合起來大概幾十個符號。
個別網站可能還允許使用漢字作為密碼。

采取大眾化的形式盡可能的跑密碼(排列組合窮舉)

三、“密碼”的長度
Wifi要求密碼最低也是長度為8位的密碼
其他的密碼要求均不一致,只能按照比較普遍的形式進行密碼設置
我們將密碼的長度粗略的劃分到4-11位

四、確認
密碼使用數字和字母
長度位4-11位
涉及到排列組合窮舉法

from itertools import product# product作用:將提供的容器中的所有元素排列組合形式按照指定的長度完全列出來 # 1.將數字、字母放入容器中 list1 = [chr(i) for i in range(48, 58)] list2 = [chr(i) for i in range(65, 91)] list3 = [chr(i) for i in range(97, 123)] newList = list1 + list2 + list3 print(newList)# 2.指定長度范圍 for lenght in range(4, 12):# 3.開始生成“密碼”# product(字符串容器,repeat=長度)for i in product(newList, repeat=lenght):result = ''.join(i)print(result)

四、使用python操作PDF并進行加密

操作PDF需要用到PyPDF2模塊,需要先去安裝這個模塊

import PyPDF2# 1.讀取PTF reader1 = PyPDF2.PdfReader('./PDF素材/水印.pdf') print(reader1) # 2.創建一個空白的PDF寫方法 writer1 = PyPDF2.PdfWriter() # 3.獲取原來的PDF總頁數 pages = reader1.getNumPages() # 4.分別將每一頁PDF遍歷 for i in range(pages):# 通過下標指定第幾頁,將此頁添加到空白的PDF中writer1.addPage(reader1.pages[i]) # 5.加密操作:encrypt() writer1.encrypt('12345')# 6.將PDF寫入指定文件再保存關閉 # 將指定文件使用二進制寫模式打開,w:如果文件不存在,自動創建新的,如果文件存在,清空內容再寫入 f = open('水印.pdf', 'wb') # 將PDF寫入到文件f中 writer1.write(f) # 保存關閉 f.close()

五、使用python操作PDF并進行解密

import PyPDF2reader1 = PyPDF2.PdfReader('水印.pdf') # 判斷讀出來的信息是否為加密信息:is_encrypted print(reader1.is_encrypted) # 解密: if reader1.is_encrypted:# 使用decrypt()和加密時的密碼進行解密reader1.decrypt('12345') # 創建空白的PDF寫方法 writer1 = PyPDF2.PdfWriter() # 從讀出來的PDF中讀取每一頁 for i in range(reader1.getNumPages()):# 將PDF的每一頁添加到寫方法中writer1.addPage(reader1.pages[i])# 將PDF保存,關閉 f = open('水印.pdf', 'wb') writer1.write(f) f.close()

六、結合python暴力破解密碼解密PDF

import PyPDF2 from itertools import productreader1 = PyPDF2.PdfReader('水印.pdf') # 判斷讀出來的信息是否為加密信息:is_encrypted print(reader1.is_encrypted) # -------------------------------------- # 解密: if reader1.is_encrypted:# product作用:將提供的容器中的所有元素排列組合形式按照指定的長度完全列出來# 1.將數字、字母放入容器中list1 = [chr(i) for i in range(48, 58)]list2 = [chr(i) for i in range(65, 91)]list3 = [chr(i) for i in range(97, 123)]newList = list1 + list2 + list3print(newList)# 2.指定長度范圍lenght = 4while 4 <= lenght <= 11:# 3.開始生成“密碼”# product(字符串容器,repeat=長度)for i in product(newList, repeat=lenght):result = ''.join(i)print(f'正在嘗試密碼:{result}')# 使用decrypt()和加密時的密碼進行解密# 解密失敗:PasswordType.NOT_DECRYPTED# 解密成功:PasswordType.OWNER_PASSWORDreader1.decrypt(result)if str(reader1.decrypt(result)) == 'PasswordType.OWNER_PASSWORD':# 當密碼解密成功后,將密碼長度設置為一個不可能存在的數值,這將導致while循環不能再正常執行print(f'正確的密碼是:{result}')lenght = -1breaklenght += 1# -------------------------------------- # 創建空白的PDF寫方法 writer1 = PyPDF2.PdfWriter() # 從讀出來的PDF中讀取每一頁 for i in range(reader1.getNumPages()):# 將PDF的每一頁添加到寫方法中writer1.addPage(reader1.pages[i])# 將PDF保存,關閉 f = open('水印.pdf', 'wb') writer1.write(f) f.close()

七、讀取PDF中的文字

import PyPDF2# PyPDF2不能讀取PDF中圖片上的文字 # reader1 = PyPDF2.PdfReader('./PDF素材/001-Python認知.pdf') reader1 = PyPDF2.PdfReader('./PDF素材/001-Python環境安裝.pdf') # 一頁一頁的讀 for i in range(reader1.getNumPages()):# 根據下表指定頁面page = reader1.pages[i]# 將PDF每一頁的內容讀取:extract_text()content = page.extract_text()print(content, type(content))# PDF中圖片上的文字應該如何讀取 # 1.截圖、文字識別。 ---> OCR光學文字識別 # Python中涉及到的光學文字識別 # EasyOCR模塊、百度的飛槳、百度AI開發者平臺等N多個OCR模塊可以供python選擇。

八、python操作PDF添加水印

import PyPDF2# 分別讀取需要加水印的PDF和水印PDF模版reader1 = PyPDF2.PdfReader('./PDF素材/001-Python認知.pdf') water = PyPDF2.PdfReader('./PDF素材/水印.pdf') writer1 = PyPDF2.PdfWriter() for i in range(reader1.getNumPages()):page = reader1.pages[i]waterPage = water.pages[0]# 兩個頁面融合:mergePage()page.mergePage(waterPage)# 將添加了水印的頁面添加到PDF寫操作中writer1.addPage(page)f = open('001-Python認知(水印版).pdf', 'wb') writer1.write(f) f.close()

九、python合并多個PDF

import PyPDF2# 1.創建空白PDF文件 writer = PyPDF2.PdfWriter() # 1.準備文件 file = ['001-Python環境安裝.pdf', '002-Python安裝.pdf'] for i in file:filePath = f'./PDF素材{i}'reader = PyPDF2.PdfReader(filePath)for i in range(reader.getNumPages()):page = reader.pages[i]writer.addPage(page)# 保存到新文件 f = open('合并。pdf', 'wb') writer.write(f) f.close()

總結

以上是生活随笔為你收集整理的python基础学习之python操作PDF文件、发送邮件添加附件10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。