我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.
例如,假设我有三个文件.使用execfile:
script_1.py电话script_2.py.script_2.py打电话script_3.py.我怎样才能获得的文件名和路径script_3.py,从内部代码script_3.py,而无需从传递这些信息作为参数script_2.py?
(执行os.getcwd()返回原始起始脚本的文件路径而不是当前文件的.)
A = os.path.join(os.path.dirname(__file__), '..')
B = os.path.dirname(os.path.realpath(__file__))
C = os.path.abspath(os.path.dirname(__file__))
我通常只是用实际路径来硬连线.但是这些语句在运行时确定路径是有原因的,我真的很想了解os.path模块,所以我可以开始使用它.
当我给ls -l /etc/fonts/conf.d/70-yes-bitmaps.conf时
lrwxrwxrwx <snip> /etc/fonts/conf.d/70-yes-bitmaps.conf -> ../conf.avail/70-yes-bitmaps.conf
所以对于符号链接或软链接,如何在python中找到目标文件的完整(绝对路径),
如果我使用
os.readlink('/etc/fonts/conf.d/70-yes-bitmaps.conf')
它输出
../conf.avail/70-yes-bitmaps.conf
但我需要绝对路径而不是相对路径,所以我想要的输出必须是,
/etc/fonts/conf.avail/70-yes-bitmaps.conf
如何..用符号链接或软链接文件的父目录的实际完整路径替换.
我使用os模块在我的Django项目settings.py文件中有相对路径.变量SITE_ROOT设置为文件的当前工作目录,settings.py然后用于引用static/media同一目录中的所有目录.
继承人我的问题:
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
在settings.py中,上述语句都具有相同的输出.但我的模板只会在我使用时加载SITE_ROOT = os.path.abspath(os.path.dirname(__file__))
Django在这里寻找模板:
TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates'),
)
SITE_ROOT设置os.getcwd()似乎让Django的查找模板文件夹的目录上面的settings.py文件
我可以很容易地不使用os.getcwd(),我的网站运行良好,但我很好奇这里可能会发生什么:)
谁知道?
在PHP中,__DIR__魔术常量计算到包含该常量出现的文件的目录的路径.
Python中是否有相同的功能?
我一直认为__file__变量总是给你当前的文件名,但这似乎并不完全是它的作用.因为如果我认为这是真的,我一直面临着一个错误.
有人告诉我"这__file__是指搜索的最后一个模块"这似乎更准确,但我想知道__file__应该做什么.
我找不到Python文档中提到的任何具体内容.很多地方似乎都提到它,但不是很清楚.
http://docs.python.org/2/c-api/import.html?highlight=__file__
http://docs.python.org/2/c-api/module.html?highlight=__file__
我一直在努力学习python-unipath并且已经掌握了基本的命令.但是,我被这个问题困扰了.所以,我想得到当前文件的祖先(2).所以,在python解释器上,我做了这样的事情:
Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from unipath import Path
>>> ORM_ROOT = Path("/home/foo/lump/foobar/turf/orm/unipath_try.py").ancestor(2)
>>> ORM_ROOT
Path('/home/foo/lump/foobar/turf')
..这是正确的,正是我想要的.现在,我将它包装在一个文件中,如下所示:
# -*- coding: utf-8 -*-
# unipath_try.py
from unipath import Path
ORM_ROOT = Path(__file__).ancestor(2)
print ORM_ROOT
当我运行这个使用时,python unipath_try.py我没有输出!没有导入错误.我完全不知道为什么会这样 - 可能是非常愚蠢的事情.将不胜感激任何帮助/方向:(