执行任何操作之前,请检查文件是否已打开

2024-06-26 14:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个脚本来根据特定条件重命名文件夹中的文件。在

    if len(self.toLoc.get()) == 0:
        searchRev = "_R" + newRev
        for filename in os.listdir(App.pdfDir):
            try:
                filePath, fileExtension = os.path.splitext(filename)
                sep = searchesri
                rest = filename.split(sep, 1)[0] + searchRev + fromLocation + fileExtension
                if fileExtension == '.pdf':
                    shutil.move(os.path.join(App.pdfDir, filename), os.path.join(App.pdfDir, rest))
                elif fileExtension == '.xlsx':
                    shutil.move(os.path.join(App.pdfDir, filename), os.path.join(App.pdfDir, rest))
            except IOError:
                print ("Errror")

我正在尝试使用try和except在进行任何重命名之前查看文件是否已打开。从现在开始,如果文件是打开的,程序会弹出“错误”消息并重命名文件,但在目录中保留原始文件的副本。我希望有一种方法可以在开始重命名之前检查文件是否打开?谢谢你的建议。在


Tags: 文件pathrestappifosfilenamesep
1条回答
网友
1楼 · 发布于 2024-06-26 14:10:13

编辑:Possible duplicate

您可以先尝试open该文件,如果该文件是:

if len(self.toLoc.get()) == 0:
searchRev = "_R" + newRev
for filename in os.listdir(App.pdfDir):
    FilePath, fileExtension = os.path.splitext(filename)
    try:
        with open(os.path.join(App.pdfDir, filename),"r+") as f:
             pass
    except IOError:
        print ("Errror")
    sep = searchesri
    rest = filename.split(sep, 1)[0] + searchRev + fromLocation + fileExtension
    if fileExtension == '.pdf':
        shutil.move(os.path.join(App.pdfDir, filename), os.path.join(App.pdfDir, rest))
    elif fileExtension == '.xlsx':
         shutil.move(os.path.join(App.pdfDir, filename), os.path.join(App.pdfDir, rest))

为了确保文件在检查之后和过程中不会被打开,shutil.move是原子的(在使用时本质上锁定访问)when on the same filesystem。在

相关问题 更多 >