我有 50 多个文件夹,每个文件夹都包含大量需要处理的数据。所有文件夹都使用完全相同的代码进行处理,利用 os.path.dirname(os.path.realpath(文件)) 获取 python 脚本所在的目录,因此用户无需手动编辑,只需双击即可。
我需要脚本看起来存在于每个文件夹中,但实际上只存在于 1 个位置,这样我就可以编辑一次,然后当从这些位置中的任何一个运行它时,文件夹路径都是正确的。另一种方法是编辑主文件,然后在我更新代码时一次粘贴一个文件夹,尽管所有 50 多个文件夹都如此,这非常繁琐且容易出错。在 Linux 上,我可以使用符号链接进行设置,但我无法找到在 Windows 上执行此操作的方法。
或者,将文件一次性粘贴到所有目标目录中,而不是一次粘贴一个,也可以实现相同的目标。
答案1
您需要一个符号链接或一个硬链接。
符号链接(或简称为符号链接)与快捷方式非常相似:有一个实际文件和多个对它的引用(符号链接)。它们甚至上面有一个小箭头图标。与快捷方式不同,符号链接可以具有任何扩展名。
硬链接将硬盘上的文件绑定到目录树中的某个位置。每个文件至少有一个硬链接,否则它不会存在于任何目录中。如果文件有多个硬链接,则无法区分原始文件,并且文件物理上只存在于一个位置。
两者都有其局限性:
- 有些软件无法很好地兼容符号链接
- 删除原始文件会导致所有符号链接损坏
- 您无法硬链接文件夹(但您可以创建目录连接点如果符号链接不够用)
- 无法创建跨分区硬链接
符号链接通常就足够了。
要创建符号链接或硬链接:
- 启动特权命令行:按Win,输入
cmd
,按Ctrl++ShiftEnter 发出
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 上的行为相同。您可以使用MKLINK
Windows Visa 及更新版本中内置的命令创建硬链接或符号链接。(创建符号链接需要管理员权限。)
或者,对于您提到的替代方案,如果文件夹只是脚本所在文件夹的直接子文件夹,则可以在脚本文件夹的命令提示符下执行以下操作:
for /d %D in (*) do (copy /y "myscript.py" "%D")
一次性更新它们。如果批量写入此命令,则需要改用以下代码:
for /d %%D in (*) do (copy /y "myscript.py" "%%D")