Python에서 열린 파일에서 경로 가져 오기


113

열린 파일이있는 os경우 전체 경로를 문자열로 가져 오는 호출이 있습니까?

f = open('/Users/Desktop/febROSTER2012.xls')

에서 f어떻게 얻을 수 "/Users/Desktop/febROSTER2012.xls"있습니까?

답변:


145

여기서 핵심 은 열린 파일을 나타내는 객체 의 name속성입니다 f. 다음과 같이 얻을 수 있습니다.

>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'

도움이 되나요?


4
만든 파일 : tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')작동하지 않습니다!
— Victor

19
@Victor : 언급 한 문서 바로 아래에있는 tempfile모듈 문서 , 특히에 대한 문서를 읽으십시오 . 이것은 임시 파일의 특정 경우이며 문서에서 볼 수 있듯이 이미 기존 솔루션이 있습니다. 이름을 읽으려는 경우에 사용할 수 없습니다. tempfile.NamedTemporaryFiletempfile.TemporaryFiletempfile.TemporaryFile
— Tadeck

12
open ( 'foo.txt', 'w')를 사용하여 파일을 만든 다음 f.name을 수행하면 출력 foo.txt 만 제공됩니다.
— searchengine27

Zans는 상대 경로에서도 작동하는 솔루션을 제공합니다. 아래에서 그의 대답을 참조하십시오.
— Markus

이름이 필요한 경우 tempfile.NamedTemporaryFile이 있습니다.
— Apollo Data

96

나는 똑같은 문제가 있었다. 상대 경로를 사용하는 경우 os.path.dirname (path)는 상대 경로 만 반환합니다. os.path.realpath 는 트릭을 수행합니다.

>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)

15
이것은 실제로 진짜 대답입니다.
— BlueTrin 2017 년

1
상대 파일 경로가 여전히 올바른 파일 경로 인 경우에만 작동합니다. '~ / Documents /'디렉토리에서 파일 이름을 'text.txt'로 지정한 다음 디렉토리를 '~ /'로 변경 os.path.realpath하면 '~ / Documents / text.txt'대신 '~ / text.txt'가 반환됩니다.
— K. Nielson

1
realpath에 문제가 있음을 발견했습니다. 파일 영문자의 대소 문자를 수정하지 않고 대신 open 문에 사용 된 대소 문자를 유지합니다. 실제로 파일 시스템에 존재하는 파일 이름을 반환하기를 바랐습니다. (물론 Windows입니다)
— RufusVS

12

디렉토리 이름 만 얻고 파일 이름이 필요하지 않은 경우 osPython 모듈을 사용하여 다음과 같은 일반적인 방법으로 수행 할 수 있습니다 .

>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'

이렇게하면 디렉토리 구조를 파악할 수 있습니다.


을 사용하면 빈 문자열이 반환됩니다 f = open('febROSTER2012.xls'). 전체 경로에 어떻게 도달 할 수 있습니까?
— NZD

3

이것도 얻을 수 있습니다.

filepath = os.path.abspath(f.name)

2
실제로 상주하는 디렉토리가 아닌 현재 작업 디렉토리에 추가합니다.
— Bachsau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.