파이썬에서 절대 파일 경로를 얻는 방법
와 같은 경로가 주어지면 "mydir/myfile.txt"
Python의 현재 작업 디렉토리에 상대적인 파일의 절대 경로를 어떻게 찾습니까? 예를 들어 Windows에서는 다음과 같이 끝날 수 있습니다.
"C:/example/cwd/mydir/myfile.txt"
>>> import os
>>> os.path.abspath("mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'
이미 절대 경로 인 경우에도 작동합니다.
>>> import os
>>> os.path.abspath("C:/example/cwd/mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'
새로운 Python 3.4 라이브러리를 사용할 수 있습니다 pathlib
. (또한를 사용하여 Python 2.6 또는 2.7 용으로 가져올 수 있습니다 pip install pathlib
.) 저자 는 다음과 같이 썼습니다 . "이 라이브러리의 목적은 파일 시스템 경로와 사용자가 수행하는 일반적인 작업을 처리 할 수있는 간단한 클래스 계층 구조를 제공하는 것입니다."
Windows에서 절대 경로를 얻으려면 :
>>> from pathlib import Path
>>> p = Path("pythonw.exe").resolve()
>>> p
WindowsPath('C:/Python27/pythonw.exe')
>>> str(p)
'C:\\Python27\\pythonw.exe'
또는 UNIX :
>>> from pathlib import Path
>>> p = Path("python3.4").resolve()
>>> p
PosixPath('/opt/python3/bin/python3.4')
>>> str(p)
'/opt/python3/bin/python3.4'
문서 위치 : https://docs.python.org/3/library/pathlib.html
>>> import os
>>> os.path.abspath('mydir/myfile.txt')
'C:\\example\\cwd\\mydir\\myfile.txt'
>>>
더 좋은 방법은 모듈 (에서 찾았 음)을 설치하는 PyPI
것입니다. 모든 os.path
함수 및 기타 관련 함수를 문자열이 사용되는 모든 곳에서 사용할 수있는 객체의 메서드로 래핑합니다 .
>>> from path import path
>>> path('mydir/myfile.txt').abspath()
'C:\\example\\cwd\\mydir\\myfile.txt'
>>>
오늘 당신은 또한 사용할 수 있습니다 unipath
를 기반으로 한 패키지 path.py
: http://sluggo.scrapping.cc/python/unipath/를
>>> from unipath import Path
>>> absolute_path = Path('mydir/myfile.txt').absolute()
Path('C:\\example\\cwd\\mydir\\myfile.txt')
>>> str(absolute_path)
C:\\example\\cwd\\mydir\\myfile.txt
>>>
일반적인 os.path 유틸리티에 대한 깨끗한 인터페이스를 제공 하므로이 패키지를 사용하는 것이 좋습니다 .
pathlib
실제로 질문에 답하는 Python 3.4 이상 업데이트 :
from pathlib import Path
relative = Path("mydir/myfile.txt")
absolute = relative.absolute() # absolute is a Path object
임시 문자열 만 필요한 경우 다음을 포함하여의 Path
모든 관련 함수와 함께 객체를 사용할 수 있습니다 .os.path
abspath
from os.path import abspath
absolute = abspath(relative) # absolute is a str object
import os
os.path.abspath(os.path.expanduser(os.path.expandvars(PathNameString)))
Note that expanduser
is necessary (on Unix) in case the given expression for the file (or directory) name and location may contain a leading ~/
(the tilde refers to the user's home directory), and expandvars
takes care of any other environment variables (like $HOME
).
Module os
provides a way to find abs path.
BUT most of the paths in Linux start with ~
(tilde), which doesn't give a satisfactory result.
so you can use srblib
for that.
>>> import os
>>> os.path.abspath('~/hello/world')
'/home/srb/Desktop/~/hello/world'
>>> from srblib import abs_path
>>> abs_path('~/hello/world')
'/home/srb/hello/world'
install it using python3 -m pip install srblib
https://pypi.org/project/srblib/
I prefer to use glob
here is how to list all file types in your current folder:
import glob
for x in glob.glob():
print(x)
here is how to list all (for example) .txt files in your current folder:
import glob
for x in glob.glob('*.txt'):
print(x)
here is how to list all file types in a chose directory:
import glob
for x in glob.glob('C:/example/hi/hello/'):
print(x)
hope this helped you
if you are on a mac
import os
upload_folder = os.path.abspath("static/img/users")
this will give you a full path:
print(upload_folder)
will show the following path:
>>>/Users/myUsername/PycharmProjects/OBS/static/img/user
In case someone is using python and linux and looking for full path to file:
>>> path=os.popen("readlink -f file").read()
>>> print path
abs/path/to/file
This always gets the right filename of the current script, even when it is called from within another script. It is especially useful when using subprocess
.
import sys,os
filename = sys.argv[0]
from there, you can get the script's full path with:
>>> os.path.abspath(filename)
'/foo/bar/script.py'
It also makes easier to navigate folders by just appending /..
as many times as you want to go 'up' in the directories' hierarchy.
To get the cwd:
>>> os.path.abspath(filename+"/..")
'/foo/bar'
For the parent path:
>>> os.path.abspath(filename+"/../..")
'/foo'
By combining "/.."
with other filenames, you can access any file in the system.
filePath = os.path.abspath(directoryName)
filePathWithSlash = filePath + "\\"
filenameWithPath = os.path.join(filePathWithSlash, filename)
참고URL : https://stackoverflow.com/questions/51520/how-to-get-an-absolute-file-path-in-python
'programing' 카테고리의 다른 글
파일에서 찾기 및 바꾸기 및 파일 덮어 쓰기가 작동하지 않고 파일을 비 웁니다. (0) | 2020.10.03 |
---|---|
Entity Framework에 삽입하는 가장 빠른 방법 (0) | 2020.10.02 |
VirtualBox에서 배율 모드를 종료하는 바로 가기 (0) | 2020.10.02 |
클래스 용 CSS의 와일드 카드 * (0) | 2020.10.02 |
Android 레이아웃에서 텍스트에 밑줄을 긋을 수 있습니까? (0) | 2020.10.02 |