簡述
在寫Python時會有一些常用到的短涵式,例如讀取目前檔案路徑、一個範例視窗…等,很多都是重複性很高但也沒有到需要import,因此這裡會放很多的小範例,也可以根據小範例減少開發的時間成本。
⚠️注意事項⚠️
日後會慢慢更新
正文
讀取目前檔案路徑
可以讀取目前檔案的路徑,並且新增新檔名稱
import os
import sys
# 獲取目前Python檔案所在的路徑
current_path = os.path.dirname(sys.argv[0])
file_path = os.path.join(current_path, 'example.txt')
print("當前文件路徑:", current_path)
⚠️注意事項⚠️
sys.argv[0]是打包檔案時的絕對路徑,os.path.abspath(__file__)是檔案暫存的位置
以上意思是如果程式有打包,寫sys.argv[0]的話是執行檔的路徑,寫os.path.abspath(__file__)的話會是程式執行暫存的位置,如果只是在編輯器上運行,兩者沒差。
跳出警告視窗
有三個警告視窗範例
- show_warningNoexit(按是之後不會關閉視窗)
- show_warning(按是之後關閉視窗)
- ask_confirmation(有兩個選擇,按是關閉視窗,按否沒動作)
import tkinter as tk
from tkinter import messagebox
def show_warningNoexit(str):
root = tk.Tk()
root.withdraw() # 隱藏主窗口
answer = messagebox.showwarning("警告", str)
if answer:
None
def show_warning(str):
root = tk.Tk()
root.withdraw() # 隱藏主窗口
answer = messagebox.showwarning("警告", str)
if answer:
exit()
def ask_confirmation(str):
root = tk.Tk()
root.withdraw() # 隱藏主窗口
answer = messagebox.askyesno("警告",str)
if answer:
None #如果按是要做的動作
exit()
else:
#如果按否要做的動作
pass
簡易儲存json格式儲存.txt,讀寫範例
簡單的將json格式的資料儲存到.txt,可以配合讀取目前檔案路徑來將.txt儲存到同資料夾
import os
import sys
import json
jsonEmpty = {}
jsonEmpty = str(jsonEmpty)
# 獲取目前Python檔案所在的路徑
current_path = os.path.dirname(sys.argv[0])
jsonData_path = os.path.join(current_path, 'jsonData.txt')
print("當前文件路徑:", current_path)
#初始化json
def checkPathAndRead(path):
# 檢查檔案是否存在
if os.path.exists(path):
# 如果檔案存在,則讀取內容
with open(path, 'r') as file:
data = str(file.read())
return json.loads(data)
else:
# 如果檔案不存在,則創建並寫入內容
with open(path, 'w') as file:
file.write(jsonEmpty)
return json.loads(jsonEmpty)
#儲存
def saveJsonData(path,data):
with open(path, 'w') as file:
file.write(str(data))
#讓json變得好閱讀
def formattedData(data):
return json.dumps(data, indent=4)
#--------------------------------------------main
jsonData = checkPathAndRead(jsonData_path)
#新增資料
jsonData["name"] = "ryan"
jsonData["age"] = "22"
#新增json格式資料
jsonData["class1"] = jsonEmpty
saveJsonData(jsonData_path,formattedData(jsonData))
print(formattedData(jsonData))
mqtt paho訂閱發佈範例
簡單的mqtt訂閱及發佈範例
import paho.mqtt.client as mqtt
import secrets
import string
class MQTTHandler:
def __init__(self, broker, port, client_id, username, password):
self.client = mqtt.Client(client_id)
self.client.username_pw_set(username, password)
self.client.on_connect = self.on_connect
self.client.on_message = self.on_message
self.client.connect(broker, port, 60)
def on_connect(self, client, userdata, flags, rc):
print(f"Connected with result code {rc}")
def on_message(self, client, userdata, msg):
print(f"Received message on topic: {msg.topic} - Message: {msg.payload.decode()}")
def on_publish(self, client, userdata, mid):
print(f"Message {mid} published successfully")
def subscribe(self,topic):
self.client.subscribe(topic)
def unsubscribe(self,topic):
self.client.unsubscribe(topic)
def publish(self, topic, message):
self.client.publish(topic, message)
def start(self):
self.client.loop_start()
def stop(self):
self.client.loop_stop()
#Mqtt Broker網址
broker = ""
port = 1883
length = 10
# 生成包含大小寫字母和數字的隨機字串
client_id = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(length))
print(client_id) # 印出隨機生成的 client_id
username = "username"
password = "password"
mqtt = MQTTHandler(broker, port, client_id, username, password)
mqtt.start()
topic = "your topic"
msg = "your message"
#發佈
mqtt.publish(topic, msg)
#訂閱
mqtt.subscribe(topic)
#如果要關閉就跑 mqtt.stop()
line notify
用line notify傳送”測試一下”
import requests
url = 'https://notify-api.line.me/api/notify'
token = '把權杖複製到這'
headers = {
'Authorization': 'Bearer ' + token # 設定權杖
}
data = {
'message':'\r\n測試一下!',
'stickerPackageId':'11539',
'stickerId':'52114122'
}
data = requests.post(url, headers=headers, data=data) # 使用 POST 方法
用line notify傳送電腦截圖
import pyautogui
import requests
myScreenshot = pyautogui.screenshot() # 截圖
myScreenshot.save('./test.png') # 儲存為 test.png
url = 'https://notify-api.line.me/api/notify'
token = '把權杖複製到這'
headers = {
'Authorization': 'Bearer ' + token # 設定 LINE Notify 權杖
}
data = {
'message':'測試一下!' # 設定 LINE Notify message ( 不可少 )
}
image = open('./test.png', 'rb') # 以二進位方式開啟圖片
imageFile = {'imageFile' : image} # 設定圖片資訊
data = requests.post(url, headers=headers, data=data, files=imageFile) # 發送 LINE Notify
打包python程式
以下不是python程式碼而是.bat的程式碼,如果要打包可以新增此.bat程式碼,就可以一鍵打包
- –windowed:是視窗化(不會有命令提示字元)
- –onefile:意思是只有一個檔案
- –icon=:打包後執行檔的圖示
- –name=:打包後名稱
cd 程式的檔案路徑
pyinstaller --windowed --onefile --icon=圖示路徑 --name=打包出來的名稱 程式碼路徑
- 淘晶馳螢幕利用python,esp32更新tft檔如果想要用uart來對淘晶馳的螢幕來進行軟體更新的話…
- 2025最新教學,在vs code中執行python,環境建置詳細教學本篇教學是在vs code上可以進行編譯及執行python的程式碼…
- 常用Python慣用短涵式區在寫Python時會有一些常用到的短涵式,例如讀取目前檔案路徑、一個範例視窗…等,很多都是重複性很高但也沒有到需要import,因此這裡會放很多的小範例,也可以根據小範例減少開發的時間成本…
- 手機鏡像投射電腦Scrcpy教學及用Python撰寫腳本自動化投射軟體是開源的Scrcpy,這個開源程式功能非常強大,對於想要直播手機遊戲的玩家來說,這是非常好的程式,不僅免費連功能也是非常夠用,重點是還可以搭配python來自定義投射方式…
- 所有常用Python涵式庫pip安裝指令區常常換設備就需要重新安裝一次涵式庫,因此在這裡放常用到的pip安裝指令…