如何使用 python 获取目录链接中的文件

问题描述 投票:0回答:1

这可能超级简单,但是经过一个小时的尝试,我还是找不到它。

从名为

/Database/Images/
的数据库中的特定文件夹,我手动创建了一个与Windows的文件夹链接并将其放置在
/Tests/Images
.

完成后,我在

/Tests
文件夹中创建了一个 python 脚本,我试图用它来访问该
/Tests/Images
链接中的文件。

如何从链接

/Database/Images/
获取
/Tests/Images
内的数据?

问题是我不能使用

os.listdir()
,因为它不是一个目录,但我似乎也无法找到知道
/Tests/Images
实际上指向
/Database/Images/

的方法

到目前为止我已经尝试了几个

os
功能但是

  • os.listdir()
    返回
    /Tests/Images
    不是目录
  • os.path.islink()
    返回 False
  • os.path.realpath()
    os.path.abspath()
    返回
    /Tests/Images
    ,而不是
    /Database/Images/
python windows symlink shortcut-file
1个回答
1
投票

看来您可能正在处理 Windows 快捷方式 (.lnk) 文件,而不是符号链接(我将在后面的答案中提到如何制作它)。您提到的 os 模块功能旨在使用符号链接,而不是 Windows 快捷方式。

您可以使用

pylnk3
包使用 Windows 快捷方式。您可以使用 pip 安装它:
pip install pylnk3
。这是您如何使用它的示例:

import os
import pylnk3

def get_shortcut_target(shortcut_path):
    with open(shortcut_path, "rb") as f:
        lnk = pylnk3.parse(f)
        return lnk.relative_path

shortcut_path = r"C:\Tests\Images.lnk"  # This should be the path to your shortcut
target_path = get_shortcut_target(shortcut_path)

print(f"Target path: {target_path}")
print("Files in target directory:")
print(os.listdir(target_path))

此脚本定义了一个函数

get_shortcut_target()
,它使用
pylnk3
从Windows快捷方式文件中解析目标路径。然后,您可以使用
os.listdir()
与目标路径来列出目标目录中的文件。

如果要创建符号链接而不是Windows快捷方式,可以使用命令提示符中的

mklink
命令(具有管理员权限)或Python中的
os.symlink()
函数。

创建符号链接的语法是

mklink /D link_path target_path
。 /D 标志用于创建目录符号链接。例如:

mklink /D C:\Tests\Images C:\Database\Images

这个命令会在

C:\Tests
目录下创建一个名为Images的符号文件夹链接,指向
C:\Database\Images
目录。

这是使用 python 创建符号链接的方法(请记住,您需要以管理员权限运行它,否则您将获得

PermissionError

import os

link_path = r"C:\Tests\Images"
target_path = r"C:\Database\Images"

os.symlink(target_path, link_path, target_is_directory=True)
© www.soinside.com 2019 - 2024. All rights reserved.