python脚本打包成exe文件获取当前路径的问题
直接上代码
def get_resource_path(relative_path):
if getattr(sys, 'frozen', False): # 是否为PyInstaller打包的exe文件
# 返回exe文件所在的绝对路径
base_path = os.path.dirname(sys.executable)
else: # 在开发环境下运行
# 返回脚本文件所在的绝对路径
base_path = os.path.dirname(__file__)
return os.path.join(base_path, relative_path)
使用的时候:
# 使用get_resource_path函数来获取chromedriver的路径
chromedriver_address_path = get_resource_path('resource/chromedriver_address.txt')
# 使用get_resource_path函数来获取time.txt的路径
time_file_path = get_resource_path('resource/time.txt')
注释:
os.path.abspath(path):
作用:返回给定路径的绝对路径。
示例:如果 path 是相对路径(如 “./test” 或 “subdir”),则它会将其转换为从当前工作目录开始的完整绝对路径。如果 path 已经是绝对路径,则直接返回该绝对路径。
使用场景:当你需要确保一个路径是绝对路径时,不论它最初是相对还是绝对,都可以使用此函数
os.path.dirname(path):
作用:返回路径中最后一个目录分隔符前的部分,即返回路径中的父目录名。
示例:如果 path 是 “D:/AutoTestSys/script/AutoFunction/file.py”,则 os.path.dirname(path) 返回的结果将是 “D:/AutoTestSys/script/AutoFunction”。
使用场景:当你需要获取一个路径中包含的目录部分而不需要文件名时,可以使用此函数。它通常用于构建相关文件或目录的路径,或者在处理目录结构时提取父目录信息。
总结:
- abspath 关注于给出绝对路径。
- dirname 关注于返回路径的父目录部分,不包括最后一级文件或目录。