python - 已编译的 EXE 中的相对文件路径
问题描述
我一直在到处寻找这个答案,但没有运气。
这是我正在尝试做的事情。我有一个编译的 python 可执行文件,它有几个目录。在这些目录中,我有我想要从 .exe 复制到桌面的函数和文件。以下是本文的可执行文件的文件结构:
EXECUTABLE.exe
|
+--configurations/
| |
| +--Win_Mozilla/
| |
| +--Extensions/ # Directory I want to copy
| +--Firefox/ # Directory I want to copy
| +--SystemExtensionDev/ # Directory I want to copy
|
+--functions/
|
+--runfunction.py
我需要做的是让 runfunction.py 将文件从配置/Win_Mozilla/ 复制到 %appdata% 中的不同文件夹中。为了实现这一点,我在 runfunction.py 中有以下内容:
import shutil
print('Configuring browser...')
try:
shutil.rmtree(r'%appdata%\Mozilla\Extensions')
shutil.rmtree(r'%appdata%\Mozilla\Firefox')
shutil.rmtree(r'%appdata%\Mozilla\SystemExtensionsDev')
except Exception as e:
print('Error caught: ' + str(e))
shutil.copytree('../configurations/Win_Mozilla/Extensions', # Error occurs here
r'%appdata%\Mozilla\Extensions')
shutil.copytree('../configurations/Win_Mozilla/Firefox',
r'%appdata%\Mozilla\Firefox')
shutil.copytree('../configurations/Win_Mozilla/SystemExtensionsDev',
r'%appdata%\Mozilla\SystemExtensionsDev')
print('Firefox has been configured')
运行此程序时,我收到一条错误消息,说file path '../configurations/Win_Mozilla/Extensions' cannot be found
让我相信shutil 的相对路径有问题。由于它是已编译的程序,我无法将路径硬编码。
为了清楚起见,我正在尝试将已编译的可执行文件中的文件夹复制到桌面或其他位置
正确的?
有人可以帮我解决这个问题吗?我做错了什么,语法错误,或者这只是我想要做的不可能吗?将程序与配置文件分开发布会更好吗?
另外,我很长一段时间都在盯着shutil的文档看我是否只是愚蠢而忘记添加一些东西,或者它是否说明了是否必须使用绝对路径,但我什么也没看到。
非常感谢您对此问题的任何帮助。
解决方案
这会解决您的问题吗?
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # To Get A Relative File Path On Any OS(Windows, Mac, Linux)
print(BASE_DIR)
推荐阅读
- python - 从类方法模拟/修补计算属性的值
- xml - 使用计算出的 xsl:variables 运行 Total?
- r - R 闪亮、可缩放的树状图程序
- python - 将字典嵌套到数据框中
- python - 并行化函数的问题(LSTM 模型)
- reactjs - 使用 react-select 时的 UNSAFE_componentWillReceiveProps
- html - CSS float+align 属性产生意想不到的结果
- ruby-on-rails - 验证:在 Rails 控制器中使用自定义方法
- javascript - iframe中src属性的动态高度和宽度
- java - 从 jsonResponse 有效负载传递保存的变量是在保存值的开头添加一个减号