🍅 歡迎點贊、收藏、評論
🍅 粉絲專屬福利:簡歷模板、PPT模板、學習資料、面試題庫,直接去文末領取
目錄
1、python操作linux
2、網路爬蟲:requests
3、發送郵件
4、字串正則匹配
5、操作資料庫:MySQLdb
6、操作execl:pandas
7、資料分析:numpy
8、資料畫圖分析:Matplotlib
9、資料壓縮
10、游戲開發:pygame
1、python操作linux
os模塊提供了不少與作業系統相關聯的函式,
>>> import os
>>> os.getcwd() # 回傳當前的作業目錄
'C:\\Python34'
>>> os.chdir('/server/accesslogs') # 修改當前的作業目錄
>>> os.system('mkdir today') # 執行系統命令 mkdir
0
建議使用 "import os" 風格而非 "from os import *",這樣可以保證隨作業系統不同而有所變化的 os.open() 不會覆寫內置函式 open(),
os常用命令
| 序號 | 方法 | 功能 |
| 1 | os.access(path, mode) | 檢驗權限模式 |
| 2 | os.chdir(path) | 改變當前作業目錄 |
| 3 | os.chflags(path, flags) | 設定路徑的標記為數字標記, |
| 4 | os.chmod(path, mode) | 更改權限 |
| 5 | os.chown(path, uid, gid) | 更改檔案所有者 |
| 6 | os.chroot(path) | 改變當前行程的根目錄 |
| 7 | os.close(fd) | 關閉檔案描述符 fd |
| 8 | os.closerange(fd_low, fd_high) | 關閉所有檔案描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略 |
| 9 | os.dup(fd) | 復制檔案描述符 fd |
| 10 | os.dup2(fd, fd2) | 將一個檔案描述符 fd 復制到另一個 fd2 |
2、網路爬蟲:requests
Requests 允許你發送純天然的 HTTP/1.1 請求,無需手工勞動,你不需要手動為 URL 添加查詢字串,也不需要對 POST 資料進行表單編碼,Keep-alive 和 HTTP 連接池的功能是 100% 自動化的,
一個簡單的爬蟲樣例:
#公眾號:資訊技術智庫
import requests
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
'(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
'(KHTML, like Gecko) Version/5.1 Safari/534.50'
response = requests.get('http://www.baidu.com',headers=headers)
3、發送郵件
有幾個模塊用于訪問互聯網以及處理網路通信協議,其中最簡單的兩個是用于處理從 urls 接收的資料的 urllib.request 以及用于發送電子郵件的 smtplib:
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
引數說明:
- host: SMTP 服務器主機, 你可以指定主機的ip地址或者域名如: runoob.com,這個是可選引數,
- port: 如果你提供了 host 引數, 你需要指定 SMTP 服務使用的埠號,一般情況下 SMTP 埠號為25,
- local_hostname: 如果 SMTP 在你的本機上,你只需要指定服務器地址為 localhost 即可,
Python SMTP 物件使用 sendmail 方法發送郵件,語法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
引數說明:
- from_addr: 郵件發送者地址,
- to_addrs: 字串串列,郵件發送地址,
- msg: 發送訊息
案例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = 'from@runoob.com'
# 公眾號:資訊技術智庫
receivers = ['429240967@qq.com'] # 接收郵件,可設定為你的QQ郵箱或者其他郵箱
# 三個引數:第一個為文本內容,第二個 plain 設定文本格式,第三個 utf-8 設定編碼
message = MIMEText('Python 郵件發送測驗...', 'plain', 'utf-8')
message['From'] = Header("西紅柿大神", 'utf-8') # 發送者
message['To'] = Header("測驗", 'utf-8') # 接收者
subject = 'Python SMTP 郵件測驗'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print "郵件發送成功"
except smtplib.SMTPException:
print "Error: 無法發送郵件"
4、字串正則匹配
re模塊為高級字串處理提供了正則運算式工具,可以說是爬蟲必備,對于復雜的匹配和處理,正則運算式提供了簡潔、優化的解決方案:如果只需要簡單的功能,應該首先考慮字串方法,因為它們非常簡單,易于閱讀和除錯:
>>> 'tea for too'.replace('too', 'two')
'tea for two'
re.match函式
re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就回傳none,
函式語法:
re.match(pattern, string, flags=0)
函式引數說明:
| 引數 | 描述 |
|---|---|
| pattern | 匹配的正則運算式 |
| string | 要匹配的字串, |
| flags | 標志位,用于控制正則運算式的匹配方式,如:是否區分大小寫,多行匹配等等, |
匹配成功re.match方法回傳一個匹配的物件,否則回傳None,
我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配運算式,
| 匹配物件方法 | 描述 |
|---|---|
| group(num=0) | 匹配的整個運算式的字串,group() 可以一次輸入多個組號,在這種情況下它將回傳一個包含那些組所對應值的元組, |
| groups() | 回傳一個包含所有小組字串的元組,從 1 到 所含的小組號, |
5、操作資料庫:MySQLdb
安裝MySQLdb,請訪問 http://sourceforge.net/projects/mysql-python
操作mysql查資料
import MySQLdb
# 連接資料庫
conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
# 獲取cursor物件來進行操作
cursor = conn.cursor()
# 更多資料:https://t.1yb.co/zHJo
sql = "select * from world where someone like 'you' "
# 執行sql
cursor.execute(sql)
6、操作execl:pandas
# -*- coding: utf-8 -*-
import xlrdimport xlwt
from datetime import date,datetime
def read_excel():
# 打開檔案
workbook = xlrd.open_workbook(r'F:\demo.xlsx')
# 獲取所有sheet
print workbook.sheet_names() # [u'sheet1', u'sheet2']
sheet2_name = workbook.sheet_names()[1]
# 根據sheet索引或者名稱獲取sheet內容
sheet2 = workbook.sheet_by_index(1) # sheet索引從0開始
sheet2 = workbook.sheet_by_name('sheet2')
# sheet的名稱,行數,列數
print sheet2.name,sheet2.nrows,sheet2.ncols
# 獲取整行和整列的值(陣列)
rows = sheet2.row_values(3) # 獲取第四行內容
cols = sheet2.col_values(2) # 獲取第三列內容
print rows
print cols
# 獲取單元格內容
print sheet2.cell(1,0).value.encode('utf-8')
print sheet2.cell_value(1,0).encode('utf-8')
print sheet2.row(1)[0].value.encode('utf-8')
# 獲取單元格內容的資料型別
print sheet2.cell(1,0).ctype
if __name__ == '__main__':
read_excel()
7、資料分析:numpy
NumPy 包含大量的各種數學運算的函式,包括三角函式,算術運算的函式,復數處理函式等,
NumPy 提供了多種排序的方法, 這些排序函式實作不同的排序演算法,每個排序演算法的特征在于執行速度,最壞情況性能,所需的作業空間和演算法的穩定性, 下表顯示了三種排序演算法的比較,
三角函式
NumPy 提供了標準的三角函式:sin()、cos()、tan(),
import numpy as np
a = np.array([0,30,45,60,90])
print ('不同角度的正弦值:')
# 通過乘 pi/180 轉化為弧度
print (np.sin(a*np.pi/180))
print ('\n')
print ('陣列中角度的余弦值:')
print (np.cos(a*np.pi/180))
print ('\n')
print ('陣列中角度的正切值:')
print (np.tan(a*np.pi/180))
8、資料畫圖分析:Matplotlib
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()
以上實體中,np.arange() 函式創建 x 軸上的值,y 軸上的對應值存盤在另一個陣列物件 y 中, 這些值使用 matplotlib 軟體包的 pyplot 子模塊的 plot() 函式繪制,
圖形由 show() 函式顯示,

9、資料壓縮
以下模塊直接支持通用的資料打包和壓縮格式:zlib,gzip,bz2,zipfile,以及 tarfile,
>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979
10、游戲開發:pygame
- Pygame是一組跨平臺的Python模塊, 用于創建視頻游戲,
- 它由旨在與Python編程語言一起使用的計算機圖形和聲音庫組成,
- Pygame由Pete Shinners正式撰寫, 以取代PySDL,
- Pygame適合于創建客戶端應用程式, 這些應用程式可以包裝在獨立的可執行檔案中,
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 500))
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygame.display.flip()

🍅 行業資料:關注即可領取PPT模板、簡歷模板、行業經典書籍PDF,
🍅 交流加群:大佬指點迷津,你的問題往往有人遇到過,求資源在群里喊一聲,
🍅 面試題庫:由技術群里的小伙伴們共同投稿,熱乎的大廠面試真題,持續更新中,
🍅 學習資料:含編程語言、演算法、大資料生態圈組件(Mysql、Hive、Spark、Flink)、資料倉庫、前端等,👇👇送書活動、更多福利👇👇
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/321262.html
標籤:python
