programing

부분(예: 폴더 경로, 이름 및 확장명)에서 파일에 대한 전체 경로를 만들려면 어떻게 해야 합니까?

yellowcard 2023. 6. 4. 10:24
반응형

부분(예: 폴더 경로, 이름 및 확장명)에서 파일에 대한 전체 경로를 만들려면 어떻게 해야 합니까?

파일 경로 이름을 모듈에 전달해야 합니다.디렉토리 이름, 기본 파일 이름 및 파일 형식 문자열에서 파일 경로를 작성하려면 어떻게 해야 합니까?

디렉토리가 호출 시 존재할 수도 있고 존재하지 않을 수 있습니다.

예:

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

반응형