38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
# Python 修正由于文件夹迁移导致符号连接错误的问题
|
||
|
||
FORMER_ROOT 为原文件夹路径,CURRENT_PATH 为新路径。例如,原来文件保存在 /home/usr/FormerPath 下,将其移动到 /home/usr/CurrentPath 路径下后,CurrentPath 下的符号连接文件,尤其是使用绝对路径进行连接的文件其指向路径还在 /home/usr/FormerPath 下,使用下列脚本可对其进行修复。
|
||
|
||
```python
|
||
#!/usr/bin/python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
import os
|
||
|
||
FORMER_ROOT = "/home/usr/FormerPath"
|
||
CURRENT_PATH = "/home/usr/CurrentPath"
|
||
|
||
def procSLink(path):
|
||
lndir = os.readlink(path)
|
||
if lndir.startswith(FORMER_ROOT):
|
||
print "Proc SymFile: "+path
|
||
print "Sym To: "+lndir
|
||
lndir = lndir[len(FORMER_ROOT):]
|
||
npath = CURRENT_PATH+lndir
|
||
print "New Symb:"+npath
|
||
os.remove(path)
|
||
os.symlink(npath, path)
|
||
|
||
|
||
def procDir(path):
|
||
files = os.listdir(path)
|
||
for f in files:
|
||
file = path + '/' + f
|
||
if(os.path.islink(file)):
|
||
procSLink(file)
|
||
if(os.path.isdir(file)):
|
||
procDir(file)
|
||
|
||
|
||
procDir(CURRENT_PATH)
|
||
```
|