在python里,如何获取当前执行程序的路径, 比如把py打包成exe然后在windows里,用计划任务来启动, 这个时候用os.getcwd()获取的就不是程序自己的目录了

本文介绍如何在Python中,无论脚本是作为源码运行还是打包成exe,通过sys和os模块获取当前执行的程序路径,包括使用sys.executable处理打包应用的情况。
摘要由CSDN通过智能技术生成

在Python中,如果你想获取当前执行的程序(比如打包成的exe文件)的路径,而不是当前工作目录(os.getcwd() 返回的结果),你可以使用 sys 模块结合 os 模块来实现。以下是如何做到这一点的方法:

  1. 使用 __file__ 属性获取当前脚本的路径。这在脚本运行时非常有用,但在打包的应用程序(如exe文件)中,__file__ 可能不会按预期工作。

  2. 对于打包的应用程序,你可以使用 sys.executable 获取正在运行的程序的路径。这对于找到打包后的exe文件非常有效。

  3. 使用 os.path 模块的函数来处理和转换路径,如 os.path.abspath()os.path.dirname(),可以帮助你从获取的执行文件路径中提取目录。

下面是一个示例代码,展示如何使用这些方法来获取当前执行的程序目录:

import sys
import os

def get_executable_path():
    """获取当前执行的程序的目录。"""
    # 对于打包的应用程序(如exe文件)
    if getattr(sys, 'frozen', False):
        executable_path = sys.executable
    # 在开发环境中,直接使用__file__
    else:
        executable_path = __file__
    return os.path.dirname(os.path.abspath(executable_path))

# 使用函数
executable_dir = get_executable_path()
print("当前执行程序的目录是:", executable_dir)

在这个例子中,get_executable_path 函数会检查程序是否被打包(例如,通过 PyInstaller 打包成 exe)。如果是,它使用 sys.executable 获取可执行文件的路径;如果不是,它则使用 __file__ 获取当前脚本的路径。然后,它使用 os.path.dirname(os.path.abspath(...)) 来确保路径是绝对的,并获取该路径的目录部分。这样,无论你的Python脚本是作为源代码直接运行,还是被打包成exe文件,这个函数都能正确返回程序所在的目录。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值