Python获取当前脚本文件路径(支持py2exe)

在使用py2exe编译后,或者更改当前工作目录后,如何获取当前脚本的文件路径:

获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事,因为Python会自动把sys.argv[0]加入sys.path。

例如有如下文件:

/User/aaa/test/test.py

进入aaa文件:
运行test/test.py,并在该脚本中使用以下的命令:

os.getcwd(),home/echo,取的是当前的工作目录
os.path[0]|os.argv[0] test/test.py,取的是被初始执行脚本所在的目录
os.path.realpath(file),/home/echo/test/test.py,取的是脚本的完整目录

特别的file这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。
也即在这个例子 里,os.path.realpath(file)输出是“/home/echo/test/test.py”,
而 os.path.split(os.path.realpath(file))[0]输出是“/home/echo/test”。

# -*- coding: cp936 -*-
import sys,os
#获取脚本文件的当前路径
def cur_file_dir():
    #获取脚本路径
    path = sys.path[0]
    #判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,
    #如果是py2exe编译后的文件,则返回的是编译后的文件路径
    if os.path.isdir(path):
        return path
    elif os.path.isfile(path):
        return os.path.dirname(path)
#打印结果
print cur_file_dir()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值