찾다

 >  Q&A  >  본문

filesystem - Python 获取文件路径及文件目录

我正在学习Python,不过遇到一些问题,想请教
OS模块中的os.path.dirname(__file__)和os.path.abspath(__file__)
运行os.path.dirname(__file__)时候,为什么返回的是空白呢?是不是因为他运行的是相对路径???
如果是的话:
1:我怎么能够知道,括号内的文件是以相对路径还是绝对路径被运行的?
2:为什么我运行下面例子脚本的时候,这个文件是以相对路径被运行的呢?

比如我下面的例子

import os

print (os.path.dirname(__file__))
print (os.path.abspath(__file__))
print (os.path.abspath(os.path.dirname(__file__)))
print (os.path.dirname(os.path.abspath(__file__)))

PS:附加问题
os.path.abspath(os.path.dirname(__file__))和os.path.dirname(os.path.abspath(__file__))性质是否一样呢?

PHP中文网PHP中文网2889일 전448

모든 응답(1)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-18 09:19:06

    建議你可以稍微瀏覽一下 Python 문서: os.path, 你就會明白囉:

    내가 좋아하는 사진:

    • os.path.abspath(path)

      • 경로 이름 path의 정규화된 절대 버전을 반환합니다. 대부분의 플랫폼에서 이는 다음과 같이normpath()함수를 호출하는 것과 같습니다:normpath(join(os.getcwd(), path)).

    • os.path.normpath(path)

      • A//B, A/B/, A/./B 및 A/foo/../B가 모두 A가 되도록 중복 구분 기호와 상위 수준 참조를 축소하여 경로 이름을 정규화합니다. /비. 이러한 문자열 조작으로 인해 기호 링크가 포함된 경로의 의미가 변경될 수 있습니다. Windows에서는 슬래시를 백슬래시로 변환합니다. 대소문자를 정규화하려면 Normcase()를 사용하세요.

    • os.path.dirname(path)

      • 경로명 path의 디렉터리명을 반환합니다. 이는 분할() 함수에 경로를 전달하여 반환된 쌍의 첫 번째 요소입니다.

    • os.path.split(path)

      • 경로 이름 path를 (head, tail) 쌍으로 나눕니다. 여기서 tail은 마지막 경로 이름 구성 요소이고 head는 그에 이르는 모든 것입니다. 꼬리 부분에는 슬래시가 포함되지 않습니다. 경로가 슬래시로 끝나면 tail은 비어 있게 됩니다. 경로에 슬래시가 없으면 헤드는 비어 있습니다. 경로가 비어 있으면 머리와 꼬리가 모두 비어 있습니다. 후행 슬래시는 루트가 아닌 한 헤드에서 제거됩니다(하나 이상의 슬래시만). 모든 경우에, Join(head, tail)은 path와 동일한 위치에 대한 경로를 반환합니다(그러나 문자열은 다를 수 있음). dirname() 및 basename() 함수도 참조하세요.

    내가 們做以下觀察:

    test.py

    으아악

    運行:

    으아악

    結果:

    으아악 <… 으아악 <…

    接著, __file__ 自就只是一個單純的name稱(비로徑) 且

    也只是很單純的利用

    來切割這個이름(這當然沒甚麼好切的, 連路徑分割符沒有):__file__ 으아악 <… <… 으아악 <… 으아악 test.py最後, print(__file__) 的結果是這麼來的:test.py 으아악

    希望講到這裡有讓你明白!

    결론

    이제 질문에 간단히 답변해 보세요

    1. dirname이 비어 있는 이유는 무엇인가요?

      • 실행시 간단한 이름을 주었기 때문에 __file__는 경로가 아닌 간단한 이름입니다

    2. 괄호 안의 파일이 상대 경로로 실행되는지 절대 경로로 실행되는지 어떻게 알 수 있나요?

      • 매우 간단합니다. Python을 어떻게 실행하느냐에 따라 다릅니다.

    3. 아래 예제 스크립트를 실행할 때 이 파일이 상대 경로로 실행되는 이유는 무엇입니까?

      • $ python 1.py 상대 경로를 직접 지정했기 때문입니다.

    4. os.path.abspath(os.path.dirname(__file__))os.path.dirname(os.path.abspath(__file__))은 동일한 속성을 가지고 있나요?

      • 기본적으로는 같습니다


    내가 답변한 질문: Python-QA

    회신하다
    0
  • 취소회신하다