当您试图打开一个不再工作的快捷方式文件(.lnk)时,windows会提示您:“此快捷方式已被更改或移动,因此此快捷方式将不再正常工作。”是否有python代码可用于检测此快捷方式是否不再工作?
当我运行以下代码来检索不再工作的快捷方式的目标路径时,不会出现任何类型的错误。代码仍然会打印到不再存在的目标文件的路径:import win32com.client
shell = win32com.client.Dispatch('WScript.Shell')
shortcut = shell.CreateShortcut(shortcutpath_cur)
target = shortcut_cur.Targetpath
print(target)
有时,即使快捷方式指向的文档仍然存在,它也不再工作。在这种情况下,我不能使用os.path.exists()或os.path.isfile(),因为它们会返回True。
最佳答案:
可以通过尝试检查文件路径是否有现有文件来执行此操作。这里有一个解决方案,包含许多方法:
How do I check whether a file exists without exceptions?
如果检查文件是否存在于快捷方式指定的路径中,则可以检测快捷方式本身是否可以工作,并为其执行自己的过程。
下面是上面链接中的一段引述,您可以使用它来执行以下操作:
“如果不打算立即打开文件,可以使用os.path.isfile
如果路径是现有的常规文件,则返回true。这遵循符号链接,因此对于同一路径,isLink()和isFile()都可以为true。import os.path
os.path.isfile(fname)
如果你需要确定它是一个文件。”
如果由于某种原因文件存在但快捷方式不起作用,则此操作将不起作用。然后,您可以使用try:打开文件,并使用except:打开可能出现的所有错误。有时,由于权限不足或target不再有效,快捷方式将无法工作。
如果文件存在但无法通过快捷方式打开,则是快捷方式文件本身、目标文件、操作系统错误/故障或权限不足的问题。