如何在程序中获得包含文件名的python程序的完整路径?

时间:2016-06-10 18:11:17

标签: python path python-os

我有一个python程序,我想从程序中获取程序的路径,但包含文件名本身。我的文件名是PyWrapper.py。现在我正在这样做:

 /home/mrpickles/Desktop/HANSTUFF/securesdk/src/

输出结果为:

/home/mrpickles/Desktop/HANSTUFF/securesk/src/PyWrapper.py/

这是我保存文件的目录的路径,但我想输出:

<ul>
  <li ng-repeat="(key, value) in movies| groupBy: 'theme'">
    Group name: {{ key }}
    <ul>
      <li ng-repeat="m in value">
        player: {{ m.movie}}
      </li>
    </ul>
  </li>
</ul>

路径是什么,包括文件名本身。这可能吗?感谢。

4 个答案:

答案 0 :(得分:0)

print __file__

应该有效。

__file__返回已执行文件的路径

答案 1 :(得分:0)

看看__file__。这为您提供了一个文件名,其中代码实际上是

此外,还有另一种选择:

import __main__ as main
print(main.__file__)

这为您提供了运行的脚本文件名(类似于argv所做的)。

当代码由另一个脚本导入时,差异就会发挥作用。

答案 2 :(得分:0)

如果您想在同一目录中找到其他文件的绝对路径,而不仅仅是您当前正在运行的文件,那么一般方法可能如下所示:

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模块相关的几个不同路径(从another StackOverflow answer复制):

  

在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__))

请记住要警惕加载模块的来源。它可能会影响__file__属性的内容(从Python 3 Data model documentation复制):

  

__file__是加载模块的文件的路径名(如果是从文件加载的)。某些类型的模块可能缺少__file__属性,例如静态链接到解释器的C模块;对于从共享库动态加载的扩展模块,它是共享库文件的路径名。

答案 3 :(得分:0)

尝试使用__file__。只要模块是从文件运行的,即不是编辑器中的代码,__file__将是模块的绝对路径!

print __file__

或者命令行。

def get_my_name():
    if __name__ == '__main__':
        return os.path.abspath(os.path.join(os.curdir, __file__))
    else:
        return __file__.replace('.pyc', '.py')