我有一个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>
路径是什么,包括文件名本身。这可能吗?感谢。
答案 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')