我有一个python脚本,它应该对目录中的每个.txt文件进行截图,并添加一个.png扩展名。除了它似乎错误命名的文件,它应该采取截图。这些文件是按顺序编号的,因为它们是动画的帧。现在1.txt可能会被误命名为3.png。以下是脚本:
import os
import pyautogui
import subprocess
def process_text_file(filename):
subprocess.call(["open", "-a", "TextEdit", filename])
pyautogui.sleep(1)
for i in range(10):
pyautogui.hotkey("command", "-")
pyautogui.hotkey("ctrl", "command", "f")
for i in range(4):
pyautogui.keyDown('shift')
pyautogui.keyDown('command')
pyautogui.press('.')
pyautogui.keyUp('shift')
pyautogui.keyUp('command')
pyautogui.hotkey("command", "up")
pyautogui.sleep(1)
screenshot = pyautogui.screenshot()
pyautogui.sleep(1)
screenshot_filename = os.path.splitext(filename)[0] + ".png"
screenshot.save(screenshot_filename)
pyautogui.hotkey("command", "w")
filename = "00.jpg.txt"
for filename in os.listdir(os.getcwd()):
if filename.endswith(".txt"):
process_text_file(filename)
我也有一个问题,当它打开第一个文件-它放大太多-但命名问题是我现在的优先事项。
我试着放进更多的pyautogui.sleep(1)
,但无济于事。我还尝试在末尾取出for循环,并在终端中的for循环中运行脚本,如下所示:for file in *.txt; do python3 script.py $file done
这也不行。
我还试过
file_list = natsorted(\[filename for filename in os.listdir(os.getcwd()) if filename.endswith(".txt")\])
for filename in file_list:
process_text_file(filename)
编辑:我发现我的一台电脑没有这个问题,但我主要使用的那台电脑有。一个使用python命令和版本3.9.12来运行脚本,另一个使用python3命令和版本3.9.6。这有什么区别吗
更新:所有与依赖关系的差异均已纠正,计算机在相同的操作系统和处理器(Mac Ventura,M1)上运行。
更新:在脚本保存新文件并关闭程序后,放入screenshot = pyautogui.screenshot()
!!!
1条答案
按热度按时间bbuxkriu1#
一般来说,Python版本(Python 2与Python 3)不应该直接影响PyAutoGUI中文件重命名和打开的行为。但是,在涉及可能导致行为差异的文件操作时,需要考虑以下几个方面:
文件系统差异:这两台计算机可能具有不同的文件系统或文件命名约定,这可能会影响文件的处理方式。例如,如果一台计算机的文件系统区分大小写,而另一台计算机的文件系统不区分大小写,则可能会导致文件命名问题。
操作系统差异:文件操作的行为在不同的操作系统之间可能会有所不同。如果两台计算机运行不同的操作系统,那么行为上的差异可能是由于底层操作系统而不是Python版本本身。
依赖库:PyAutoGUI依赖于各种底层库来与操作系统交互并执行GUI自动化任务。两台计算机之间这些库的版本差异可能会导致行为的变化。