扫码关注官方订阅号
假设有个文件的位置是 ...A/B/main.py,main.py 是需求被执行的代码。 如何获得文件夹 A 的完整路径呢?
认证0级讲师
获得 main,py 上上层的路径
import os print os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
解释下:
__file__:当前文件路径 os.path.dirname(file): 某个文件所在的目录路径 os.path.join(a, b, c,....): 路径构造 a/b/c os.path.abspath(path): 将path从相对路径转成绝对路径 os.pardir: Linux下相当于"../"
获取 python 文件位置的模块有 os os.path sys. 题主的问题可以如下:
os
os.path
sys
# -*- coding: utf-8 -*- import sys, os pwd = sys.path[0] # 获取当前执行脚本的位置 print os.path.abspath(os.path.join(pwd, os.pardir, os.pardir))
一般获取文件位置方法有
sys.path[0]
os.getcwd()
__file__
区别:
print __file__
name '__file__' is not defined
在主执行文件中,都没有差别,在不同文件下,就不同了,例如 在 A 目录下执行:
$ A python ./B/main.py # os.getcwd() 将会得到 A 锁住目录。sys.path[0] 则是脚本 main.py 的目录
个人觉得 sys.path 比较稳妥
很丑的方式, 用__file__在打包成windows的EXE时会出问题:
import os.path os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '..'))
import re, sys match = re.match('(.*)/(.*)', sys.path[0]) print match.group(1)
import inspect print inspect.stack()[-1][1]
参考:http://qa.helplib.com/127252
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
获得 main,py 上上层的路径
解释下:
获取 python 文件位置的模块有
osos.pathsys. 题主的问题可以如下:一般获取文件位置方法有
sys.path[0]获取主执行文件路径, 可能是一个相对路径,通常abspath是保险.os.getcwd()获取解释器执行脚本时候的所在地方__file__获取模块所在的路径的区别:
print __file__是会导致name '__file__' is not defined错误的,因为这时没有在任何一个脚本下执行, 也就是没有 file的定义了。在主执行文件中,都没有差别,在不同文件下,就不同了,例如 在 A 目录下执行:
$ A python ./B/main.py # os.getcwd() 将会得到 A 锁住目录。sys.path[0] 则是脚本 main.py 的目录
个人觉得 sys.path 比较稳妥
很丑的方式, 用
__file__在打包成windows的EXE时会出问题:参考:http://qa.helplib.com/127252