让文件出现在多个文件夹中

让文件出现在多个文件夹中

我有 50 多个文件夹,每个文件夹都包含大量需要处理的数据。所有文件夹都使用完全相同的代码进行处理,利用 os.path.dirname(os.path.realpath(文件)) 获取 python 脚本所在的目录,因此用户无需手动编辑,只需双击即可。

我需要脚本看起来存在于每个文件夹中,但实际上只存在于 1 个位置,这样我就可以编辑一次,然后当从这些位置中的任何一个运行它时,文件夹路径都是正确的。另一种方法是编辑主文件,然后在我更新代码时一次粘贴一个文件夹,尽管所有 50 多个文件夹都如此,这非常繁琐且容易出错。在 Linux 上,我可以使用符号链接进行设置,但我无法找到在 Windows 上执行此操作的方法。

或者,将文件一次性粘贴到所有目标目录中,而不是一次粘贴一个,也可以实现相同的目标。

答案1

您需要一个符号链接或一个硬链接。

符号链接(或简称为符号链接)与快捷方式非常相似:有一个实际文件和多个对它的引用(符号链接)。它们甚至上面有一个小箭头图标。与快捷方式不同,符号链接可以具有任何扩展名。

硬链接将硬盘上的文件绑定到目录树中的某个位置。每个文件至少有一个硬链接,否则它不会存在于任何目录中。如果文件有多个硬链接,则无法区分原始文件,并且文件物理上只存在于一个位置。

两者都有其局限性:

  • 有些软件无法很好地兼容符号链接
  • 删除原始文件会导致所有符号链接损坏
  • 您无法硬链接文件夹(但您可以创建目录连接点如果符号链接不够用)
  • 无法创建跨分区硬链接

符号链接通常就足够了。

要创建符号链接或硬链接:

  1. 启动特权命令行:按Win,输入cmd,按Ctrl++ShiftEnter
  2. 发出mklink命令:

    • mklink link_name link_target对于文件符号链接
    • mklink /d link_name link_target对于文件夹符号链接
    • mklink /h link_name link_target对于文件硬链接
    • mklink /j link_name link_target用于目录连接

答案2

在 Win Vista 及更新版本中,您可以创建符号链接或硬链接,其行为与 Linux 上的行为相同。您可以使用MKLINKWindows Visa 及更新版本中内置的命令创建硬链接或符号链接。(创建符号链接需要管理员权限。)

或者,对于您提到的替代方案,如果文件夹只是脚本所在文件夹的直接子文件夹,则可以在脚本文件夹的命令提示符下执行以下操作:

for /d %D in (*) do (copy /y "myscript.py" "%D")

一次性更新它们。如果批量写入此命令,则需要改用以下代码:

for /d %%D in (*) do (copy /y "myscript.py" "%%D")

相关内容