1. 程式人生 > 其它 >第三方庫之xlutils、xlrd、openpyxl、schedule、requests

第三方庫之xlutils、xlrd、openpyxl、schedule、requests

1.xlutils、xlrd用來修改excel

import xlrd
from xlutils import copy
book = xlrd.open_workbook("test.xls")
new_book = copy.copy(book)
sheet = new_book.get_sheet(0)
sheet.write(0,0,"編號")
sheet.write(0,1,"名字")
new_book.save("test.xls")

2.openpyxl 是用於讀取和寫入 Excel 2010 xlsx / xlsm / xltx / xltm 檔案的 Python 庫。

import openpyxl
book = openpyxl.load_workbook("test2.xlsx")  #load_workbook()方法開啟檔案。

sheet = book["Sheet1"] 
print(book.sheetnames) #所有sheet頁的名字
print(sheet.max_row) #多少行
print(sheet.max_column) #多少列

sheet.cell(1,1).value = "id"  #修改某個元素的值
print(dir(sheet))
print(sheet["A1"].value) 
print(sheet["A2"].value)

sheet["A1"] = "編號"    #修改欄位名
book.save("test2.xlsx")   #儲存檔案

3.schedule用來進行定時任務的管理

import schedule
import time

def test():
    print("I'm working...")


def test2():
    print("I'm working... in job2")

# 每10分鐘執行一次job函式
schedule.every(10).minutes.do(test)
# 每10秒執行一次job函式
schedule.every(10).seconds.do(test)
# 當every()沒引數時預設是1小時/分鐘/秒執行一次job函式
schedule.every().hour.do(test)
schedule.every().day.at("10:30").do(test)
schedule.every().monday.do(test)
# 具體某一天某個時刻執行一次job函式
schedule.every().wednesday.at("13:15").do(test)
# 可以同時定時執行多個任務,但是每個任務是按順序執行
schedule.every(10).seconds.do(job2)
# 如果job函式有有引數時,這麼寫
schedule.every(10).seconds.do(job,"引數")
while True:
    # 啟動服務
    schedule.run_pending()
    time.sleep(1)

4.yamail用來發送郵件

import yamail

username = "input username "
password = "input password "
host = "smtp.qq.com" #qq
# host = "smtp.163.com" #163
# host = "smtp.126.com" #qq

smtp = yamail.SMTP(host=host,user=username,password=password)
# smtp.send(to="this is email")
smtp.send(
    to=["this is email","this is email"],
    cc=["this is email","this is email"],
    subject="課後好好學習",
    contents="下課之後先吃飯,吃完飯明天好好學習。",
    attachments=["a.jpg","a.xls"]
)

5.urllib處理請求

from urllib.request import urlopen
from urllib.parse import urlencode,urljoin,quote,quote_plus,unquote,unquote_plus

# host = "http://api.nnzhp.cn/?stu_name=小黑"
# print(quote_plus(host))  #url編碼
# print(quote(host))
url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=%E4%BD%A0%E5%A5%BD%E6%96%BD%E5%B7%A5%E9%98%9F&rsv_spt=1&oq=sdgsdsdg&rsv_pq=cbca1b490021d566&rsv_t=83a3dvr2MgkSUHYndjTkUaly8mj0O2gEaU6FiQmNXisrrzrJ0W3nU6KvAPnPtdK%2FyfiU&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=23&rsv_sug1=10&rsv_sug7=101&rsv_sug2=0&rsv_btype=t&inputT=4151&rsv_sug4=4151"
# url = urljoin(host,'/api/login')

print(unquote(url))
print(unquote_plus(url))

# url = "http://api.nnzhp.cn/api/user/stu_info"
data = {"stu_name":"xiaohei","age":18}
# print(urlencode(data))
# # req = urlopen(url,urlencode(data).encode() ) #post請求
# req = urlopen(url+'?'+urlencode(data))
# print(req.read().decode())

6.requests處理網路請求

import requests

#-------------------get請求----------------
# url = "http://api.nnzhp.cn/api/user/stu_info"
# data = {"stu_name":"小"}
# req = requests.get(url,data)

#-------------------post請求----------------
# url = "http://api.nnzhp.cn/api/user/login"
# data = {"username":"niuhanyang","passwd":"aA123456"}
# data2 = {"version":1}
# req = requests.post(url,params=data2,data=data)
# print(req.url)  #檢視請求發出去的url
#http://api.nnzhp.cn/api/user/login?version=1
#params引數是在url裡面的
#data引數是在body裡面的

# url = "http://api.nnzhp.cn/api/user/add_stu"
# data = {
#       "grade": "飛馬座",
#       "phone": "22345678992",
#       "name":"哈哈哈哈"
# }
# req = requests.post(url,json=data)


# url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
# data = {
#     "gc": '' ,
#     "st": "21",
#     "end": "41",
#     "sort": 0,
#     "bkn": ""
# }
# cookie = {'':''} #'cookie中值寫成key:value形式
#req = requests.post(url,data,cookies=cookie)

url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
data = {
    "gc": 180208520,
    "st": "21",
    "end": "41",
    "sort": 0,
    "bkn": "1391997515"
}
header = {
    "cookie":"RK=XYYhgDpPfy; ptcz=a5b23b4f93bc2f304119957286b77b21be95814358d482ef0a2bf216733e57ba; pgv_pvid=5931324545; uin=o0511402865; skey=@HHempil2m; p_uin=o0511402865; pt4_token=tkeLBl-znMjpBJxIv1Chj*kLx7p0dsh4BkZfF39cpDk_; p_skey=OS7gS9Zw8*r*aIpqd5-S5BUo65EJMNWRkLLMO1Vpu5o_; traceid=5b35fe5632",
    "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
req = requests.post(url,data,headers=header)

result=req.json()
print(result)

# url = "http://api.nnzhp.cn/api/file/file_upload"
# data = {"file":open("a.xls",'rb')}
# req = requests.post(url,files=data)
# print(req.json())  #返回字典,如果介面返回的不是json,那會報錯


# url = "http://aliimg.changba.com/cache/photo/941190975_200_200.jpg"
#
# req = requests.get(url,verify=False)
#
# with open("a.jpg",'wb') as fw:
#     fw.write(req.content)

# print(req.json())
# print(req.text) #返回的是字串
# print(req.content) #返回的是bytes的,包括圖片,媒體等等
# print(req.status_code)  #返回的狀態碼
# print(req.cookies) #返回的cookie
# print(req.headers) #返回的header