1. 程式人生 > >python之旅-日記9(記錄零基礎自己的每天學習)

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)