三、Python基礎(5)
阿新 • • 發佈:2020-09-09
(一)SYS模組
1、sys模組
import sys # 獲取Python直譯器的版本資訊 sys.version # 返回作業系統平臺名稱 sys.platform # 返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值 sys.path # 獲取系統當前編碼,預設為:uft-8 sys.getdefaultencoding() # 設定系統的預設編碼 sys.setdefaultencoding() # 獲取檔案系統使用編碼方式,預設是utf-8 sys.getfilesystemencoding() # 用來獲取執行Python檔案的時候,傳過來的引數sys.argv
2、獲取執行Python檔案時的時候,傳過來的引數
sys.argv:是一個指令碼執行引數列表,列表的第一個元素是指令碼名稱,第二元素開始是引數:
(二)異常處理
1、下標越界:IndexError: list index out of range
2、找不到檔案或資料夾:FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
3、無法將字串轉換為浮點:ValueError: could not convert string to float: 's.3'
4、程式中一旦遇到異常,程式就會停止丟擲異常:捕獲異常,處理異常
(1)一般捕捉異常用:try
(2)多方面考慮異常,捕獲異常,打印出來:
try: '1' + 2 2 / 0 except TypeError as e: print(e) print('出錯了') except ZeroDivisionError as e : print('除數不能為0') except IndexError: print('下標錯誤') except KeyError: print('找不到字典的Key')
except FileNotFoundError: print('檔案打不開')
else: print('沒有異常')
(3)捕捉到所有的異常:Exception
try: '1' + '2' 2 / 0 # Exception都可以捕捉到所有的異常,但判斷不了清晰的異常資訊 except Exception as e: print('出異常了',e) else: print('沒有異常')
(4)不管有沒有異常,最後必走的:finally
try: '1' + '2' 2 / 0 except Exception as e: print('出異常了',e) else: print('沒有異常') finally: print('abc')
(5)例項定義異常函式:
def is_float(s): try: f = float(s) except: return False else: if f > 0: return True
(6)處理異常,呼叫堆疊資訊,列印異常報錯
import traceback def is_price(s): try: f = float(s) except Exception as e: traceback.print_exc() print('列印錯誤資訊:',traceback.format_exc()) return False else: if f > 0: return True # 呼叫堆疊資訊 is_price('abmdkkkde')
(三)傳送郵件
1、首先需要安裝yamail模組:pip install yamail
2、傳送郵件,用什麼郵箱都可以:例如QQ郵箱,需要進入設定-賬戶-開啟授權碼:
3、傳送郵件程式:
import yamail # import yagmail 發附件的附件如果是中文名,是亂碼(與yamail用法是一樣的) # 改成自己郵箱的郵箱的伺服器即可 smtp = yamail.SMTP(host='smtp.126.com', user='[email protected]', password='TXGDEDVEBEFZXSAZ') # 如果是163、qq等免費郵箱的話需要授權碼 # 自己公司的郵箱,一般使用密碼 # 傳送給誰 smtp.send(to=['[email protected]'], # 郵件主題 subject='good afternoon,請查收附件', # 抄送給誰,如果是多個人寫list cc=['[email protected]','[email protected]'], # 郵件正文 contents='郵件正文', # 附件,如果是多個附件,寫list attachments=['day06.txt','day07.txt'] ) smtp.close()
(四)關於Excel操作:Python中分別按照這三個模組
# 安裝讀取Excel pip install xlrd # 安裝寫入Excel pip install xlwt # 安裝修改Excel pip install xlutils
1、寫Excel
(1)例項一:
import xlwt book = xlwt.Workbook() sheet = book.add_sheet('students') sheet.write(0,0,'id') sheet.write(0,1,'name') sheet.write(0,2,'age') sheet.write(1,0,'1') sheet.write(1,1,'Bob') sheet.write(1,2,'18') # 如果字尾寫成xlsx,使用微軟office開啟 book.save('students.xls')
(2)例項二:
#編號 姓名 地址 年齡 stus = [ [1,'Ann','bejing',51], [2,'Mike','shanghai',28], [3,'Helen','shanghai',16], [4,'Bob','shanghai',21], [5,'Nancy','shanghai',35], [6,'John','beijing',16], ] stus.insert(0,['編號','姓名', '地址','年齡']) book = xlwt.Workbook() sheet = book.add_sheet('sheet1') # row = 0 # for stu in stus: # 控制行 # col = 0 # for s in stu: # 控制列 # sheet.write(row,col,s) # col +=1 # row +=1 for row,stu in enumerate(stus): for col,s in enumerate(stu): sheet.write(row,col,s) ages = [s[-1] for s in stus if type(s[-1])!=str] avg_age = round(sum(ages) / len(ages),2) content = '平均年齡:%s'%avg_age sheet.write(row+1,0,content) book.save('students.xls')
2、讀取Excel
(1)需要匯入:import xlrd
(2)例項如下:
import xlrd # 開啟檔案 book = xlrd.open_workbook('students.xls') # 根據sheet頁獲取資料 sheet = book.sheet_by_index(0) sheet = book.sheet_by_name('sheet1') # 獲取所有的sheet頁,返回的是一個list,list裡面就是每個sheet物件 print(book.sheets()) for s in book.sheets(): print(s.row_values(2)) # 獲取具體的單元格資料 print(sheet.cell(0,0).value) # 獲取某一整行的資料 print(sheet.row_values(0)) print(sheet.row_values(1)) # 獲取某一整列資料 print(sheet.col_values(0)) print(sheet.col_values(1)) # 獲取多少行資料 print(sheet.nrows) # 獲取多少列資料 print(sheet.ncols)
3、修改Excel
(1)需要匯入:
from xlutils import copy
import xlrd
(2)修改Excel,例項如下:
from xlutils import copy import xlrd # 開啟檔案 book = xlrd.open_workbook('students.xls') sheet = book.sheet_by_index(0) # 拷貝一個新的模組進行修改 new_book = copy.copy(book) copy_sheet = new_book.get_sheet(0) for row in range(1,sheet.nrows-1): # 1 2 3 4 5 6 7 addr = sheet.cell(row,2).value addr = addr.replace('beijing','北京').replace('shanghai','上海') copy_sheet.write(row,2,addr) new_book.save('students.xls')
(七)MySQL操作
1、前提需要安裝:pip install pymysql
2、需要匯入:import pymysql
# 定義IP地址 host = '118.24.3.40' # 定義使用者名稱 user = 'jxz' # 定義密碼,只能是字串 password = '123456' # 資料庫名稱DB db = 'jxz' # 定義埠號:int型別 port = 3306 # 連線資料庫 connect = pymysql.connect(host = host, user = user, password = password , port = port ,db = db, autocommit = True # 自動提交 ) cur =connect.cursor() # 建立遊標,倉庫管理員 # 插入資料 cur.execute('insert into students values (2,"Amy","女","18","天馬座","天津");') cur.execute('insert into students(name,class) values ("Ann","女","天馬座");') # 刪除資料 cur.execute('delete from students where id =123241;') cur.execute('update students set name = "Amy" where id = 2;') # connect.rollback() # 回滾 # insert語句、delete語句、update語句需要執行commit,才能執行生效,可以設定自動提交 connect.commit() # 查詢表資料 cur.execute('select * from students limit 5;') # 表的描述 print(cur.description) result = cur.fetchall() #拿到所有的結果,是一個二維陣列 print(cur.fetchone()) print(cur.fetchmany(2)) print(result) cur.close() connect.close()