以防万一您想在同一目录中找到其他文件的绝对路径,而不仅仅是您当前正在运行的文件,一般方法可能如下所示:
import sys,os
pathname = os.path.dirname(sys.argv[0])
fullpath = os.path.abspath(pathname)
for root, dirs, files in os.walk(fullpath):
for name in files:
name = str(name)
name = os.path.realpath(os.path.join(root,name))
print name
正如其他人所提到的,您可以利用该__file__
属性。您可以使用该__file__
属性返回与当前加载的 Python 模块相关的几个不同路径(从另一个 StackOverflow 答案复制):
当一个模块在 Python 中加载时,文件被设置为其名称。然后,您可以将其与其他功能一起使用来查找文件所在的目录。
# The parent directory of the directory where program resides.
print os.path.join(os.path.dirname(__file__), '..')
# The canonicalised (?) directory where the program resides.
print os.path.dirname(os.path.realpath(__file__))
# The absolute path of the directory where the program resides.
print os.path.abspath(os.path.dirname(__file__))
请记住要警惕您正在加载的模块来自何处。它可能会影响属性的内容(从Python 3 Data model documentation__file__
复制):
__file__
是从文件中加载模块的文件的路径名(如果它是从文件中加载的)。某些类型的模块可能缺少该__file__
属性,例如静态链接到解释器的 C 模块;对于从共享库动态加载的扩展模块,它是共享库文件的路径名。