Python:当目标使用此文件时复制此文件
我需要定期更新SharePoint上的联机Excel文件。用户打开此文件时出现问题。在这种情况下,我收到的Windows错误消息如下: 是否可以在Python脚本中处理此类错误?我所说的句柄是指在一段时间后,通过使用Python:当目标使用此文件时复制此文件,python,windows,Python,Windows,我需要定期更新SharePoint上的联机Excel文件。用户打开此文件时出现问题。在这种情况下,我收到的Windows错误消息如下: 是否可以在Python脚本中处理此类错误?我所说的句柄是指在一段时间后,通过使用time.sleep函数继续尝试保存文件。我尝试了最常用的方法: import shutil try: shutil.copy2('Track_Changes_Testing.xlsx', destination_on_sharepoint) except Excepti
time.sleep
函数继续尝试保存文件。我尝试了最常用的方法:
import shutil
try:
shutil.copy2('Track_Changes_Testing.xlsx', destination_on_sharepoint)
except Exception as err:
print(err)
但我只看到弹出的Windows错误消息您可以使用
time.sleep()
和一个while循环来完成此操作,就像您要求的那样。但是请注意,如果继续使用该文件,该脚本将永远运行。我不确定这种行为是有意的还是理想的
import shutil
import time
import sys
while True:
print("Runned") #debugging
try:
shutil.copy2('Track_Changes_Testing.xlsx', destination_on_sharepoint)
break
except (OSError, IOError):
print("OSError or IOError")
# wair 5 min before trying again
time.sleep(300)
except shutil.Error as e:
print(f"Error while copying: {e}" )
# wair 5 min before trying again
time.sleep(300)
except:
print("Unexpected error:", sys.exc_info()[0])
# wair 5 min before trying again
time.sleep(300)
您可以使用
time.sleep()
和while循环来完成这项工作,就像您要求的那样。但是请注意,如果继续使用该文件,该脚本将永远运行。我不确定这种行为是有意的还是理想的
import shutil
import time
import sys
while True:
print("Runned") #debugging
try:
shutil.copy2('Track_Changes_Testing.xlsx', destination_on_sharepoint)
break
except (OSError, IOError):
print("OSError or IOError")
# wair 5 min before trying again
time.sleep(300)
except shutil.Error as e:
print(f"Error while copying: {e}" )
# wair 5 min before trying again
time.sleep(300)
except:
print("Unexpected error:", sys.exc_info()[0])
# wair 5 min before trying again
time.sleep(300)
循环不起作用。只完成第一次迭代,然后停止,并显示Windows错误消息。似乎“except”并没有捕捉到这个异常。添加了更多的异常。。。请再试一次,并报告您遇到了什么错误?仍然循环不起作用,并且Python中的打印不会产生任何错误。也许其他复制文件的Python函数会捕捉到这一点,所以您不会得到错误,代码会执行吗?然后检查文件是否被复制?尝试在while之后直接添加打印,看看它是否执行循环。您也可以尝试
copy
而不是copy2
循环不起作用。只完成第一次迭代,然后停止,并显示Windows错误消息。似乎“except”并没有捕捉到这个异常。添加了更多的异常。。。请再试一次,并报告您遇到了什么错误?仍然循环不起作用,并且Python中的打印不会产生任何错误。也许其他复制文件的Python函数会捕捉到这一点,所以您不会得到错误,代码会执行吗?然后检查文件是否被复制?尝试在while之后直接添加打印,看看它是否执行循环。您也可以尝试copy
而不是copy2
如果其他用户打开并修改了该文件,是否确实要替换该文件,从而放弃他们的工作?可能需要标记为手动解决。该对话框可能是一个严重错误对话框,可通过导入msvcrt禁用代码>msvcrt.SetErrorMode(msvcrt.SEM\u FAILCRITICALERRORS)
。使用此错误设置时,写入操作将正常失败,并允许Python引发脚本可以处理的异常。@将联机打开Excel的ErykSun用户不需要编辑它。他们应该定期打开它,以检查来自Python脚本的更新。您建议使用msvcrt
静音Windows错误对话框,但我仍然无法捕获异常。循环(由Björn B提出)不起作用。如果其他用户打开并修改了该文件,您真的想替换它,从而放弃他们的工作吗?可能需要标记为手动解决。该对话框可能是一个严重错误对话框,可通过导入msvcrt禁用代码>msvcrt.SetErrorMode(msvcrt.SEM\u FAILCRITICALERRORS)
。使用此错误设置时,写入操作将正常失败,并允许Python引发脚本可以处理的异常。@将联机打开Excel的ErykSun用户不需要编辑它。他们应该定期打开它,以检查来自Python脚本的更新。您建议使用msvcrt
静音Windows错误对话框,但我仍然无法捕获异常。循环(由Björn B提出)不起作用。