Jos*_*osh 6 python symlink multithreading
假设我有一个文件路径:
/path/to/some/directory/file.ext
Run Code Online (Sandbox Code Playgroud)
在python中,我想在与文件相同的目录中创建一个符号链接,指向该文件.我想最终得到这个:
/path/to/some/directory/symlink -> file.ext
Run Code Online (Sandbox Code Playgroud)
我可以很容易地使用os.chdir()来cd进入目录并创建符号链接.但是os.chdir()不是线程安全的,所以我想避免使用它.假设进程的当前工作目录不是包含该文件的目录(os.getcwd()!='/ path/to/some/directory'),那么最好的方法是什么?
我想我可以在我所在的任何目录中创建一个被破坏的链接,然后将其移动到包含该文件的目录:
import os, shutil
os.symlink('file.ext', 'symlink')
shutil.move('symlink', '/path/to/some/directory/.')
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
注意,我不想最终得到的是:
/path/to/some/directory/symlink -> /path/to/some/directory/file.ext
Run Code Online (Sandbox Code Playgroud)
Wes*_*ter 20
您也可以使用,os.path.relpath()
以便您可以使用带有相对路径的符号链接.假设你的脚本是在一个目录foo/
和这个目录有子目录src/
和dst/
,并且要在创建相对符号链接dst/
,使其指向文件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))
)
Run Code Online (Sandbox Code Playgroud)
列出dst/
然后显示的内容:
1.txt -> ../src/1.txt
2.txt -> ../src/2.txt
Run Code Online (Sandbox Code Playgroud)
如果你想创建整个foo
目录树的tarball,相关符号链接很有用,因为我不认为tar
更新符号链接指向生成的tarball内部的相对路径.
tit*_*ito 14
您可以将第二个参数设置为目标,例如:
import os
os.symlink('file.ext', '/path/to/some/directory/symlink')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12164 次 |
最近记录: |