当您尝试打开不再起作用的快捷方式文件(.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
。
答案 0 :(得分:3)
您可以通过尝试检查文件路径是否具有现有文件来执行此操作。在SO上有一个解决方案,其中包含多种方法来执行此操作: How do I check whether a file exists without exceptions?
如果您检查该文件是否在快捷方式指定的路径中存在,则可以检测该快捷方式本身是否可以工作,并为其执行自己的过程。
这是上面链接中的引号,您可以用来执行此操作:
”“如果您不打算立即打开文件,则可以使用os.path.isfile
如果path是现有的常规文件,则返回True。这遵循符号链接,因此,对于同一路径,islink()和isfile()都可以为true。
import os.path
os.path.isfile(fname)
如果需要确保它是一个文件。”
如果由于某种原因该文件存在,但您的快捷方式不起作用,则此方法将不起作用。然后,您可以使用try:
打开文件,并except:
可能出现的所有可能的错误。有时,由于权限不足或target
不再有效,快捷方式将不起作用。
如果文件存在但无法通过快捷方式打开,则说明快捷方式文件本身,目标文件,操作系统错误/故障或权限不足均存在问题。