부분(예: 폴더 경로, 이름 및 확장명)에서 파일에 대한 전체 경로를 만들려면 어떻게 해야 합니까?
파일 경로 이름을 모듈에 전달해야 합니다.디렉토리 이름, 기본 파일 이름 및 파일 형식 문자열에서 파일 경로를 작성하려면 어떻게 해야 합니까?
디렉토리가 호출 시 존재할 수도 있고 존재하지 않을 수 있습니다.
예:
dir_name='/home/me/dev/my_reports'
base_filename='daily_report'
format = 'pdf'
문자열을 만들어야 합니다.'/home/me/dev/my_reports/daily_report.pdf'
조각들을 수동으로 연결하는 것은 좋은 방법이 아닌 것 같습니다.나는 노력했다.os.path.join
:
join(dir_name,base_filename,format)
그러나 그것은 줍니다.
/home/me/dev/my_reports/daily_report/pdf
이것은 잘 작동합니다.
os.path.join(dir_name, base_filename + '.' + filename_suffix)
명심하세요os.path.join()
서로 다른 운영 체제가 서로 다른 경로 구분 문자를 사용하기 때문에 존재합니다.이 차이를 완화하여 크로스 플랫폼 코드가 각 OS에 대한 특수 사례로 혼란스러울 필요가 없습니다.파일 이름 "확장자"(각주 참조)에 대해 이 작업을 수행할 필요가 없습니다. 확장자는 항상 점 문자 앞에 나옵니다.
어떤 기능을 사용하면 기분이 나아지고 코드가 불필요하게 복잡해지는 것을 좋아한다면 다음과 같이 할 수 있습니다.
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
코드를 깨끗하게 유지하려면 접미사에 점을 포함시키기만 하면 됩니다.
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
이 접근 방식은 또한 pathlib의 접미사 표기법과 호환되는데, pathlib은 이 질문이 있은 지 몇 년 후에 python 3.4에 도입되었습니다.이전 버전과의 호환성이 필요하지 않은 새 코드는 다음을 수행할 수 있습니다.
suffix = '.pdf'
pathlib.PurePath(dir_name, base_filename + suffix)
더 짧은 것을 사용하고 싶을 수도 있습니다.Path()
대신에PurePath()
로컬 OS의 경로만 처리하는 경우.원래 질문의 이면에 있는 크로스 플랫폼 문제를 고려할 때, 저는 그 선택에 의문을 제기할 것입니다.
경고: pathlib 사용 안 함with_suffix()
이를 위하여그 방법은 손상될 것입니다.base_filename
점이 포함된 경우.
각주:Microsoft 운영 체제 이외에는 "확장자"라는 파일 이름이 없습니다.Windows에 존재하는 MS-DOS 및 FAT는 수십 년 동안 사용되지 않았던 CP/M에서 이를 차용했습니다.대부분의 사람들이 흔히 볼 수 있는 점과 세 글자의 숫자는 다른 모든 최신 OS의 파일 이름의 일부일 뿐이며, 기본 제공되는 의미는 없습니다.
Python 3.4 이상에서는 표준 라이브러리 모듈을 다음과 같이 사용할 수 있습니다.
>>> from pathlib import Path
>>> dirname = '/home/reports'
>>> filename = 'daily'
>>> suffix = '.pdf'
>>> Path(dirname, filename).with_suffix(suffix)
PosixPath('/home/reports/daily.pdf')
>>> import os
>>> os.path.join(dir_name, base_filename + "." + format)
'/home/me/dev/my_reports/daily_report.pdf'
기본 파일 이름에 확장자를 포함하는 것이 어떻습니까?
dir_name='/home/me/dev/my_reports/'
base_filename='daily_report.pdf'
os.path.join(dir_name, base_filename)
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATE_PATH = Path.joinpath(BASE_DIR,"templates")
print(TEMPLATE_PATH)
import os
def createfile(name, location, extension):
print(name, extension, location)
#starting creating a file with some dummy contents
path = os.path.join(location, name + '.' + extension)
f = open(path, "a")
f.write("Your contents!! or whatever you want to put inside this file.")
f.close()
print("File creation is successful!!")
def readfile(name, location, extension):
#open and read the file after the appending:
path = os.path.join(location, name + '.' + extension)
f = open(path, "r")
print(f.read())
#pass the parameters here
createfile('test','./','txt')
readfile('test','./','txt')
언급URL : https://stackoverflow.com/questions/7132861/how-can-i-create-a-full-path-to-a-file-from-parts-e-g-path-to-the-folder-name
'programing' 카테고리의 다른 글
Xcode 디버깅 - 이미지 표시 (0) | 2023.06.04 |
---|---|
Aurora 페일오버로 인해 연결이 읽기 전용 상태로 유지됨 (0) | 2023.06.04 |
Ruby: 인스턴스의 호출 클래스 메서드 (0) | 2023.06.04 |
Excel VBA: range.copy 후 행진 개미를 프로그래밍 방식으로 제거하는 방법. (0) | 2023.05.25 |
MongoDB 결과 쿼리를 평준화할 수 있습니까? (0) | 2023.05.25 |