python常用的模塊開發腳本

目錄

標準註釋

與linux交互

連接MySQL等數據庫

Tkinter基礎框架

SQL查詢結果excel導出

調用windows程序

ping網絡

圖形化統計分析

匿名函數&不定量元素輸入

pandas常用方法

爬蟲,王者榮耀皮膚爬取


  • 標準註釋

# -*- coding: UTF-8 -*-
##########################################################################
# SCRIPT_NAME     : FindStation.py
# CREATE_TIME     : 2020/03/02
# AUTHOR          : Mochou
# DESCRIBETION    : make station's find get easy
# PARAMETER       : need input station
# UPDATE_RECORD   : change run_way from write to input and kill some bugs
#
# DATE      OPERATION       CZR         DESCRIBETION              
# ________  _____________   ________    __________________________________
#
# 2020/03/02  UPDATE Mochou  
##########################################################################
  • 與linux交互

import paramiko

# 創建SSHClient實例對象
ssh = paramiko.SSHClient()
# 調用方法,標識沒有遠程機器的公鑰,允許訪問
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接遠程機器 地址端口用戶名密碼
ssh.connect("192.168.1.24",22,"root","hhyjksfzx")
# 執行命令
#ssh.exec_command('echo $?')
stdin,stdout,stderr = ssh.exec_command('date +"%Y%m%d"')
print(stdout.read())
ssh.close()
  • 連接MySQL等數據庫

  • 其他數據庫格式與之一樣,import包不同而已,比如sqlserver是pymssql
from pymysql import connect

def exeSqlRes(server,user,password,database,sql):
    
    conn = connect(server,user,password,database) 
    cursor = conn.cursor()    
    cursor.execute(sql)    
    list1 = cursor.fetchall()
    # get count
    try:
        print("業務日期  :%s\n收費總金額:%s\n" % (list1[0][0],list1[0][1]))  
    except:
        print("日期選擇錯誤,請確認該天有數據\n")
    conn.close()
exeSqlRes('xx.xx.xx.xx','xx','xx','xxx','select now()')
  • Tkinter基礎框架

from tkinter import *
import tkinter.font as tf

def btn_click():
    text.insert(INSERT,("輸入錯誤,請確定輸入值!\n"))

def specialType():
    # 調整字體高亮
    ft = tf.Font(family='微軟雅黑',size=10) 
    text.tag_config('tag',foreground = 'blue',background='pink',font = ft)
    text.insert(INSERT,"您選擇的是特情碼字典,查詢結果如下:\n",'tag')
      
# enter調用
def btn_click_enter(self):
    btn_click()

# 清空消息 
def cleartext():
    text.delete('0.0', END)
    
# 創建窗口對象的背景色
root = Tk()
root.title('便捷式一鍵查詢服務系統')
root.geometry('960x700')

# Frame爲佈局函數
main_frame = Frame(root)
text_frame = Frame(main_frame)
station_frame = Frame(main_frame)
botton_frame = Frame(station_frame)
# 建立列表 
l1 = Label(station_frame,text='輸入門架,站碼,IP,互通,廠商或相關拼音')
#l2 = Label(station_frame,text='')
ipText=Entry(station_frame)
# 字體顯示
# ft = tkFont.Font(family='Fixdsys', size=10, weight=tkFont.BOLD)
# pack是加載到窗口
l1.pack(side='left')
ipText.pack(side='left')
ipText['width']=24
#l2.pack(side='left')
'''
兩個函數的意義是既能enter運行,又可以點擊運行,方便操作,擴大使用
bind綁定enter鍵
注意裏面是return 而不是enter
'''
b = Button(station_frame,text='查詢',command=btn_click)
b['width']=4
b['height']=1
b.pack(side='left')
ipText.bind("<Return>", btn_click_enter)

# 消息輸入界面
text = Text(text_frame,width = 130, height= 39)
text.pack()
main_frame.pack()
c = Button(text='清空',command=cleartext)
c['width']=4
c['height']=1
c.pack(side='left')
# 第二個函數
d = Button(text='導出excel',command=excelExport)
d['width']=8
d['height']=1
d.pack(side='top')
# 輸入框的位置
station_frame.pack(side='top',pady='10')
text_frame.pack()
# 進入消息循環
root.mainloop()
  • SQL查詢結果excel導出

import xlwt
import os

def excelExport():
    path1 = os.getcwd()
    excel_file = '%s\\門架基礎信息數據表' % (path1)
    #判斷文件是否存在
    if os.path.exists(excel_file):
        os.remove(excel_file)
    else:
        pass
    wb = xlwt.Workbook(encoding='utf-8')
    # 創建sheet,覆蓋
    ws = wb.add_sheet('門架基礎信息篩選表')
    # 行數
    row_num = 0
    font_style = xlwt.XFStyle()
    # 二進制
    font_style.font.bold = True
    # 表頭內容
    columns = ['互通1','互通2','門架','工控機IP','站名','服務器IP','方向','屬性','flag1','vplr','rsu','管理處','樁號']
    # 寫進表頭內容
    for col_num in range(len(columns)):
        ws.write(row_num, col_num, columns[col_num], font_style)
        font_style = xlwt.XFStyle()  # 將列名加粗後重新設置
    # list1是與columns同等長度的二維列表,可以是sql的查詢結果,也可以是自身apeend
    for row in list1:
        row = ['' if i == 'nan' else i for i in row]  # 如果某項爲nan則設置爲空
        row_num += 1
        # 逐行寫入Excel
        for col_num in range(len(row)):
            ws.write(row_num, col_num, row[col_num], font_style)
    wb.save(r'%s.xls' % excel_file) 
    list1.clear()
  • 調用windows程序

import os as os
import codecs

class EasyStation:
    # 讀取站名,類型強轉
    num1 = int(input("請輸入數字站碼: "))
    dict1 = {1111:['test1','xx.xx.xx.xx'],1113:['test2','xx.xx.xx.xx']}

    # 對錯誤站名做異常處理
    try:
        servername = dict1[num1][0]
        dbip = dict1[num1][1]
        file1 = "foo.txt"
        if os.path.exists(file1):
            print ("file have been existed , del firstly")
            os.remove(file1) 
        else:
            with codecs.open(file1,'w',encoding='utf-8') as f:
                f.write(u"[serverinfo]\nserverNum=1\nnum1=" + str(num1) + "\n" + "[")
                   
        # 啓動
        def open_app(app_dir):
            os.startfile(app_dir)
        if __name__ == "__main__":
            app_dir = r'D:\Program Files (x86)\Youdao\YoudaoNote\YoudaoNote.exe'
            open_app(app_dir)
 
    except KeyError:
        print ("Error:未找到該站名,請查證")
  • ping網絡

import re
import subprocess

def run(str_ip): 
    ftp_ret = subprocess.Popen('ping %s -n 3' % str_ip,stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
    ret = ftp_ret.stdout.read()  
    # 這裏的字符集一定是gbk,否則會報錯
    str_ret = ret.decode("gbk")  
    ret_s = re.search("TTL",str_ret)
    if ret_s:
        print('net succ!')
    else:
        print('net error!')
run('www.baidu.com')
  • 圖形化統計分析

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from pylab import *

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 導入數據
sj=['00','01','02','03','04','05','06','18','19','20','21','22','23']
#sj = filter(lambda x:x%200 == 0, zl)
sp1 = [103.00,102.50,104.50,104.00,105.00,104.00,107.50,101.00,100.00,102.00,100.50,103.50,104.50]
sp2 = [105.11,105.89,106.22,105.11,105.00,105.78,105.11,95.44,95.56,97.11,101.00,102.00,103.44]
#開始畫圖
plt.title('醒目工程安裝前後對比圖')
plt.plot(sj, sp1, color='red', label='安裝前1車道車速')
plt.plot(sj, sp2, color='green', label='安裝後1車道車速')
plt.legend() # 顯示圖例
plt.xlabel('小時')
plt.ylabel('車速')
#plt.savefig("temp1.jpg")
plt.show()
  • 匿名函數&不定量元素輸入

def test(a,*b):
    print(a,end = ' ')
    for i in b:
        func = lambda i : i * 2
        print(func(i),end = ' ')
test(1,2,3,4,5,6,7)
  • pandas常用方法

pandas傳送門,是的我在推銷我自己

  • 爬蟲,王者榮耀皮膚爬取

import os
import requests

url = 'https://pvp.qq.com/web201605/js/herolist.json'
herolist = requests.get(url)  # 獲取英雄列表json文件
herolist_json = herolist.json()  # 轉化爲json格式
hero_name = list(map(lambda x: x['cname'], herolist.json()))  # 提取英雄的名字
hero_number = list(map(lambda x: x['ename'], herolist.json()))  # 提取英雄的編號
# 下載圖片
def downloadPic():
    i = 0
    for j in hero_number:
        # 創建文件夾
        os.mkdir("C:\\Users\\dtboy\\Desktop\\downWz\\" + hero_name[i])
        # 進入創建好的文件夾
        os.chdir("C:\\Users\\dtboy\\Desktop\\downWz\\" + hero_name[i])
        i += 1
        for k in range(10):
            # 拼接url
            onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(j) + '-bigskin-' + str(k) + '.jpg'
            im = requests.get(onehero_link)  # 請求url
            if im.status_code == 200:
                open(str(k) + '.jpg', 'wb').write(im.content)  # 寫入文件
downloadPic()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章