在pyautogui中重命名和打开文件时,python3和python会有什么不同吗?

vm0i2vca  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(227)

我有一个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()!!!

bbuxkriu

bbuxkriu1#

一般来说,Python版本(Python 2与Python 3)不应该直接影响PyAutoGUI中文件重命名和打开的行为。但是,在涉及可能导致行为差异的文件操作时,需要考虑以下几个方面:
文件系统差异:这两台计算机可能具有不同的文件系统或文件命名约定,这可能会影响文件的处理方式。例如,如果一台计算机的文件系统区分大小写,而另一台计算机的文件系统不区分大小写,则可能会导致文件命名问题。
操作系统差异:文件操作的行为在不同的操作系统之间可能会有所不同。如果两台计算机运行不同的操作系统,那么行为上的差异可能是由于底层操作系统而不是Python版本本身。
依赖库:PyAutoGUI依赖于各种底层库来与操作系统交互并执行GUI自动化任务。两台计算机之间这些库的版本差异可能会导致行为的变化。

相关问题