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.