반응형
파이썬에서 파일이 심볼릭 링크인지 확인하는 방법은 무엇입니까?
파이썬에는 주어진 파일/디렉토리가 심볼릭 링크인지 확인하는 기능이 있나요?예를 들어, 아래 파일의 경우, 내 래퍼 함수가 반환되어야 합니다.True
.
# ls -l
total 0
lrwxrwxrwx 1 root root 8 2012-06-16 18:58 dir -> ../temp/
lrwxrwxrwx 1 root root 6 2012-06-16 18:55 link -> ../log
디렉토리 항목이 심볼릭 링크인지 확인하려면 다음을 사용합니다.
경로가 심볼릭 링크인 디렉토리 항목을 참조하는 경우 True를 반환합니다.심볼릭 링크가 지원되지 않는 경우 항상 False입니다.
예를 들어, 다음이 주어집니다.
drwxr-xr-x 2 root root 4096 2011-11-10 08:14 bin/
drwxrwxrwx 1 root root 57 2011-07-10 05:11 initrd.img -> boot/initrd.img-2..
>>> import os.path
>>> os.path.islink('initrd.img')
True
>>> os.path.islink('bin')
False
python3.4+의 경우Path
학급
from pathlib import Path
# rpd is a symbolic link
>>> Path('rdp').is_symlink()
True
>>> Path('README').is_symlink()
False
사용 시 주의해야 합니다.is_symlink()
방법.돌아올 것입니다.True
이름이 지정된 개체가 심볼 링크인 경우 링크의 대상이 존재하지 않는 경우에도 마찬가지입니다.
예(리눅스/유닉스):
ln -s ../nonexistentfile flnk
그런 다음 현재 디렉터리에서 다음을 수행합니다.
>>> from pathlib import Path
>>> Path('flnk').is_symlink()
True
>>> Path('flnk').exists()
False
프로그래머는 그들이 정말 원하는 것을 결정해야 합니다.Python3는 많은 클래스의 이름을 바꾼 것 같습니다.Path 클래스에 대한 설명서 페이지를 읽어보는 것이 좋을 수도 있습니다. https://docs.python.org/3/library/pathlib.html
이 주제를 확대할 의도는 없었지만, 심볼릭 링크를 찾아서 실제 파일로 변환하고 파이썬 도구 라이브러리에서 이 스크립트를 발견했기 때문에 이 페이지로 리디렉션되었습니다.
#Source https://github.com/python/cpython/blob/master/Tools/scripts/mkreal.py
import sys
import os
from stat import *
BUFSIZE = 32*1024
def mkrealfile(name):
st = os.stat(name) # Get the mode
mode = S_IMODE(st[ST_MODE])
linkto = os.readlink(name) # Make sure again it's a symlink
f_in = open(name, 'r') # This ensures it's a file
os.unlink(name)
f_out = open(name, 'w')
while 1:
buf = f_in.read(BUFSIZE)
if not buf: break
f_out.write(buf)
del f_out # Flush data to disk before changing mode
os.chmod(name, mode)
mkrealfile("/Users/test/mysymlink")
언급URL : https://stackoverflow.com/questions/11068419/how-to-check-if-file-is-a-symlink-in-python
반응형
'programing' 카테고리의 다른 글
DOM의 특정 요소에서 HTML+CSS+JS를 선택적으로 복사하는 도구 (0) | 2023.07.30 |
---|---|
OpenMP가 없는 시스템에서 OpenMP 무시 (0) | 2023.07.25 |
if 문 정수 (0) | 2023.07.25 |
이 작업을 수행하려면 ORA-02069 global_names 매개 변수를 TRUE로 설정해야 합니다. (0) | 2023.07.25 |
JavaScript에서 동적(변수) 문자열을 정규식 패턴으로 사용 (0) | 2023.07.25 |