1 回答

TA貢獻1911條經驗 獲得超7個贊
這里是固定代碼:
from datetime import datetime
import os
from pynput import keyboard
import pyautogui
import pathlib
def on_activate():
today = datetime.now()
d = today.strftime("%Y-%m-%d-%H-%M-%S")
myScreenshot = pyautogui.screenshot(region=(200,200, 1720, 800))
time_stamp = '{:%y%d%m}'.format(today)
fpath = pathlib.Path("C:\\","Users","Desktop","TestScreenCap", time_stamp)
if not os.path.exists(fpath):
os.makedirs(fpath)
myScreenshot.save(pathlib.Path(fpath,d + ".jpg"))
def for_canonical(f):
return lambda k: f(l.canonical(k))
hotkey = keyboard.HotKey(
keyboard.HotKey.parse('<ctrl>+<alt>+h'),
on_activate)
with keyboard.Listener(
on_press=for_canonical(hotkey.press),
on_release=for_canonical(hotkey.release)) as l:
l.join()
問題是您正在使用:
myScreenshot.save(pathlib.Path(fpath,d,".jpg"))
該函數pathlib.Path(fpath,d,".jpg")將字符串添加\到每個字符串的末尾,因此您嘗試保存文件的路徑是:
C:Users\Desktop\TestScreenCap\200309\2020-09-03-16-50-20\.jpg
正如您所看到的,文件名是引發異常的擴展名。
只需替換為:myScreenshot.save(pathlib.Path(fpath,d + ".jpg"))
指定路徑的另一個問題是它C:被解釋為Drive,所以當你保存函數時,保存到你的程序當前運行的路徑,而不是真正的指定路徑。要修復此部分,只需替換C:為C:\\.
閱讀您的代碼,我認為您希望將屏幕截圖保存在當前用戶桌面中,如果是這樣,請將行:替換為fpath = pathlib.Path("C:\\","Users","Desktop","TestScreenCap", time_stamp)并fpath = pathlib.Path(os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop'), time_stamp)在頂部添加import os. 有了這個,你就不需要關心這條道路的正確世代。
添加回答
舉報