假设我有一个文件路径:
/path/to/some/directory/file.ext
在 python 中,我想在与文件相同的目录中创建一个符号链接(symbolic link),即 指向文件。我想以此结束:
/path/to/some/directory/symlink -> file.ext
我可以很容易地使用 os.chdir() 来 cd 到目录中,然后 创建符号链接(symbolic link)。但是 os.chdir() 不是线程安全的,所以我想避免 使用它。假设进程的当前工作目录不是 包含文件的目录 (os.getcwd() != '/path/to/some/directory'), 执行此操作的最佳方法是什么?
我想我可以在我所在的任何目录中创建一个失效链接,然后 将其移动到包含文件的目录:
import os, shutil
os.symlink('file.ext', 'symlink')
shutil.move('symlink', '/path/to/some/directory/.')
有更好的方法吗?
请注意,我不想以这样的方式结束:
/path/to/some/directory/symlink -> /path/to/some/directory/file.ext
最佳答案
您还可以使用 os.path.relpath()
这样您就可以将符号链接(symbolic link)与相对路径一起使用。假设您的脚本位于目录 foo/
中这个目录有子目录 src/
和 dst/
,并且您想在 dst/
中创建相关符号链接(symbolic link)指向 src/
中的文件.为此,您可以:
import os
from glob import glob
for src_path in glob('src/*'):
os.symlink(
os.path.relpath(
src_path,
'dst/'
),
os.path.join('dst', os.path.basename(src_path))
)
列出 dst/
的内容然后显示:
1.txt -> ../src/1.txt
2.txt -> ../src/2.txt
如果您想创建整个 foo
的压缩包,相对符号链接(symbolic link)很有用。目录树,我不相信tar
更新符号链接(symbolic link)以指向生成的压缩包内的相对路径。
关于python - 在不使用 os.chdir() 的情况下在 python 中创建相对符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793631/