티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Open file in a relative location in Python

Python에서 상대 경로로 파일 열기

 문제 내용 

Suppose my python code is executed a directory called main and the application needs to access main/2091/data.txt.

제 Python 코드가 main이라는 디렉토리에서 실행되고 응용 프로그램이 main/2091/data.txt에 액세스해야 한다고 가정합니다.

 

how should I use open(location)? what should the parameter location be?

open(location)을 어떻게 사용해야 하나요? 매개변수 위치는 어떻게 해야 합니까?

 

I found that below simple code will work.. does it have any disadvantages?

아래의 간단한 코드가 작동할 것이라는 것을 발견했습니다.. 단점이 있나요?
file = "\2091\sample.txt"
path = os.getcwd()+file
fp = open(path, 'r+');

 

 

 높은 점수를 받은 Solution 

With this type of thing you need to be careful what your actual working directory is. For example, you may not run the script from the directory the file is in. In this case, you can't just use a relative path by itself.

이러한 유형의 경우 실제 작업 디렉토리가 무엇인지 주의해야 합니다. 예를 들어 파일이 있는 디렉터리에서 스크립트를 실행할 수 없습니다. 이 경우 상대 경로 자체를 사용할 수 없습니다.

 

If you are sure the file you want is in a subdirectory beneath where the script is actually located, you can use __file__ to help you out here. __file__ is the full path to where the script you are running is located.

원하는 파일이 실제로 스크립트가 있는 하위 디렉토리에 있다고 확신하는 경우 여기에서 __file__을(를) 사용하여 도움을 받을 수 있습니다. __file__은 실행 중인 스크립트가 있는 전체 경로입니다.

 

So you can fiddle with something like this:

따라서 다음과 같이 조작할 수 있습니다.
import os
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)

 

 

 가장 최근 달린 Solution 

Get the path of the parent folder, then os.join your relative files to the end.

상위 폴더의 경로를 가져온 다음 os.join을 통해 상대 파일을 끝까지 연결합니다.
# get parent folder with `os.path`
import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# now use BASE_DIR to get a file relative to the current script
os.path.join(BASE_DIR, "config.yaml")

 

The same thing with pathlib:

pathlib도 마찬가지입니다:
# get parent folder with `pathlib`'s Path
from pathlib import Path

BASE_DIR = Path(__file__).absolute().parent

# now use BASE_DIR to get a file relative to the current script
BASE_DIR / "config.yaml"

 

 

출처 : https://stackoverflow.com/questions/7165749/open-file-in-a-relative-location-in-python

반응형
댓글
공지사항
최근에 올라온 글