python之旅-日記9(記錄零基礎自己的每天學習)
CMD 操作命令
win+R 開啟執行面板
dir 當前目錄
date 當前系統日期
time 當前時間
(cd 新路徑)
ver win版本
(copy 檔案 目標路徑 )
shutdown -s關閉 (-t 時間) -r重啟
通過python程式執行cmd
os.system(‘命令’) /s /r/t
subprocess.Popen(‘命令’ shell=Ture程式由shell執行)
電子郵件程式設計
(傳送)SMTP程式設計:1.連線SMTP伺服器
引入smtplib模組,s = smtplib.SMTP(伺服器)
2.執行EHLO命令判斷是否相應
s.ehlo() 返回一個元組 第一個元素200-299為正確返回值
無迴應 SMTPHeloError異常
3.判斷SMTP伺服器是否支援指定屬性
s.has_extn(屬性) 返回布林值
size 允許傳送郵件大小
startls 伺服器是否支援TLS
auth 伺服器是否支援認證
4.傳送郵件
s.sendmail(發件人地址,收件人地址,郵件內容)
sys.exit(0)無錯誤退出 1-127有錯誤退出
sys.argv[]是用來獲取命令列輸入的引數的(引數和引數之間空格區分),
sys.argv[0]表示程式碼本身檔案路徑,所以從引數1開始,表示獲取的引數了
raise 當程式出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行
s.login(username,password) 登陸
Socket模組常見的異常有:
Socket.error 與一般I/O和通訊問題有關的
Socket.gaierror 與查詢地址有關的
Socket.herror 與其他地址錯誤有關
Socket.timeout 與一個socket上呼叫settimeout()後,超時處理有關
(接收)POP程式設計:1.連線pop3伺服器
from poplib import POP3 s.smtplib.POP3(server)
2.執行USER命令
p.user(username) 傳送使用者名稱
3.執行PASS命令
p.pass(password) 傳送使用者密碼
4.執行STAT命令
ret = p.stat() 返回元組 郵件數和共有多少位元組
5.執行TOP命令
list = p.top(n,m) 返回n號郵件的前m行內容
6.執行LIST命令
ret = p.list() 返回元組 郵件伺服器上郵件的ID和大小
7.執行RETR命令
ret = p.retr(n) 返回郵件全部文字 n讀取郵件的序號
SMTP_mail.py
import smtplib import sys import getpass import socket if len(sys.argv) < 4: print("[*]usage: %s server fromaddr toaddr" %sys.argv[0]) sys.exit(1) server = sys.argv[1] fromaddr = sys.argv[2] toaddr = sys.argv[3] message = ''' TO: %s From: %s Subject: Test Message from 32.py Hello ,This a simple SMTP_mail exmaple. ''' %(toaddr,fromaddr) def auth_login(): print('input your username:') username = input() password = getpass.getpass('input your password:')#獲取密碼控制檯不回顯 try: s = smtplib.SMTP(server) print(s.ehlo()) code = s.ehlo()[0] print(code) usersmtp = 1 if not (200 <= code <= 299): usersntp = 0 code = s.ehlo()[0] if not (200 <= code <= 299): raise SMTPHeloError(code,resp) if usersmtp and s.has_extn('size'): print('允許傳送郵件的大小' + s.esmtp_features['size']) if len(message) > int(s.esmtp_features['size']): print('檔案太大,中斷髮送') sys.exit(2) if usersmtp and s.has_extn('auth'): print('使用認證連線') try: s.login(username,password) except smtplib.SMTPException as e: print('認證失敗') sys.exit(1) else: print('伺服器不支援認證,使用普通連線') s.sendmail(fronaddr,toaddr,message) #socket模組 四種異常gaierror查詢地址有關 error I/O通訊有關 herror其他地址錯誤有關 timeout超時處理有關 except (socket.gaierror,socket.error,socket.herror,smtplib.SMTPException) as e: print('****郵件成功傳送****') print(e) else: print('****郵件成功傳送****') if __name__ == "__main__": auth_login()
POP3_mail.py
from poplib import POP3 import sys import socket from getpass import getpass pop3server = 'pop3.qq.com' print("name") username = input() password = getpass("password") try: rec = POP3(pop3server) rec.user(username) rec.pass_(password) ret = rec.stat() print(ret) rec.quit() except(socket.gaierror,socket.herror,socket.error) as e: print(e) sys.exit(1)