1 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
這里是固定代碼:
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"))
該函數(shù)pathlib.Path(fpath,d,".jpg")將字符串添加\到每個(gè)字符串的末尾,因此您嘗試保存文件的路徑是:
C:Users\Desktop\TestScreenCap\200309\2020-09-03-16-50-20\.jpg
正如您所看到的,文件名是引發(fā)異常的擴(kuò)展名。
只需替換為:myScreenshot.save(pathlib.Path(fpath,d + ".jpg"))
指定路徑的另一個(gè)問題是它C:被解釋為Drive,所以當(dāng)你保存函數(shù)時(shí),保存到你的程序當(dāng)前運(yùn)行的路徑,而不是真正的指定路徑。要修復(fù)此部分,只需替換C:為C:\\.
閱讀您的代碼,我認(rèn)為您希望將屏幕截圖保存在當(dāng)前用戶桌面中,如果是這樣,請(qǐng)將行:替換為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. 有了這個(gè),你就不需要關(guān)心這條道路的正確世代。
添加回答
舉報(bào)