gpt4 book ai didi

python - 在执行任何操作之前检查文件是否已打开

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:39 24 4
gpt4 key购买 nike

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

    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 来查看文件是否已打开。截至目前,如果文件打开,程序会输出“错误”消息并重命名该文件,但在目录中保留原始文件的副本。我希望有一种方法可以在开始重命名过程之前检查是否有任何文件已打开?感谢您的任何建议。

最佳答案

编辑: Possible duplicate

您可以先尝试打开文件,如果是这样的话,这会抛出IOException:

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 .

关于python - 在执行任何操作之前检查文件是否已打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com