Python关闭其他用户可能已打开的文件

2024-10-05 19:25:12 发布

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

我需要写入另一个用户可能已打开的文件。因此,我认为我需要一种尝试写入的方法,如果失败,请为所有用户关闭该文件,然后再次写入。Python中有没有一种方法可以做到这一点

with open(biFile, 'w') as consolidate:
        outputData.to_csv(consolidate, header=True, index=False)

我有时会遇到的错误是:

PermissionError                           Traceback (most recent call last)
<ipython-input-53-6a5da56e94fb> in <module>()
    373             consolidateDate = consolidateDate + datetime.timedelta(days=32)
    374             consolidateDate = consolidateDate.replace(day=1)
--> 375     with open(biFile, 'w') as consolidate:
    376         outputData.to_csv(consolidate, header=True, index=False)
    377     #=================================================================================

PermissionError: [Errno 13] Permission denied: '\\\\SERVERNAME\\FOLDERNAME\\File.csv'

我最初的想法是,如果这个文件是打开的,就直接跳过对它的写入。脚本每小时运行一次,所以没什么大不了的。但是一位同事刚刚告诉我,我们的一位实习生曾经写过一个脚本,该脚本将检查是否有人打开了一个文件,如果文件在3分钟内没有关闭,脚本将关闭它。同样的功能在这里将是伟大的

我还考虑过让该文件对除运行该脚本的用户之外的所有人都是只读的,但它最终将在服务器级别运行,我不确定我有多喜欢机器人成为共享驱动器上文件的唯一所有者


Tags: 文件csvto方法用户脚本trueas
1条回答
网友
1楼 · 发布于 2024-10-05 19:25:12

我绕过了这个问题,只要在写失败时跳过就行了。这个脚本每小时运行一次,所以在更好的答案出现之前,这不是什么大问题

    tryCount = 0
    while tryCount < 5:
        try:
            with open(biFile, 'w') as consolidate:
                outputData.to_csv(consolidate, header=True, index=False)
            tryCount = 5
        except:
            tryCount = tryCount =+ 1
            if tryCount < 5:
                logEvent('BI File Write Error #'+str(tryCount), False)
            else:
                logEvent('BI File Write Failed', False)

相关问题 更多 >