目錄
標準註釋
# -*- 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常用方法
爬蟲,王者榮耀皮膚爬取
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()