Python关闭其他用户可能已打开的文件
我需要写入另一个用户可能已打开的文件。因此,我认为我需要一种尝试写入的方法,如果失败,请为所有用户关闭该文件,然后再次写入。Python中有没有一种方法可以做到这一点Python关闭其他用户可能已打开的文件,python,Python,我需要写入另一个用户可能已打开的文件。因此,我认为我需要一种尝试写入的方法,如果失败,请为所有用户关闭该文件,然后再次写入。Python中有没有一种方法可以做到这一点 with open(biFile, 'w') as consolidate: outputData.to_csv(consolidate, header=True, index=False) 我有时会遇到的错误是: PermissionError Traceba
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'
PermissionError回溯(最近一次调用)
在()
373 consolidateDate=consolidateDate+datetime.timedelta(天数=32)
374合并日期=合并日期。替换(第1天)
-->375,开放式(双文件,'w')作为合并:
376 outputData.to_csv(合并,标题=True,索引=False)
377 #=================================================================================
权限错误:[Errno 13]权限被拒绝:'\\\SERVERNAME\\FOLDERNAME\\File.csv'
我最初的想法是,如果这个文件是打开的,就直接跳过对它的写入。脚本每小时运行一次,所以没什么大不了的。但是一位同事刚刚告诉我,我们的一位实习生曾经写过一个脚本,该脚本将检查是否有人打开了一个文件,如果文件在3分钟内没有关闭,脚本将关闭它。同样的功能在这里将是伟大的
我还考虑将该文件只读给除运行此脚本的用户之外的所有人,但它最终将在服务器级别运行,我不确定我有多喜欢机器人成为共享驱动器上文件的唯一所有者。如果写入失败,我只需跳过写入即可解决此问题。这个脚本每小时运行一次,所以在更好的答案出现之前,这不是什么大问题
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)
tryCount=0
当tryCount<5时:
尝试:
以开放式(双文件,'w')作为合并:
outputData.to_csv(合并,标题=True,索引=False)
tryCount=5
除:
tryCount=tryCount=+1
如果tryCount<5:
logEvent('BI文件写入错误#'+str(tryCount),False)
其他:
logEvent('BI文件写入失败',False)
我认为“为其他用户关闭文件”是不可能的。写入别人打开的文件不应该是问题。确保每个人对文件都有一个一致的视图,这是您需要协作实现的。那么我如何避免上面提到的错误呢?使用try-except语句捕获错误,然后再次运行这不会导致一个恒定的循环,直到文件最终由打开它的人关闭为止?