python - 在python中获取最初执行的脚本的路径?
问题描述
我有以下工作目录,我从中运行 ankiAdd.py - 在这个脚本中,有一次我正在访问我硬盘上其他地方的另一个 python 程序的“内部 API”,以便使用其中一些功能。我想获取存储“ankiAdd.py”的工作目录,但是我一直在检索另一个目录。
以下片段是我的 ankiAdd.py 脚本中的一个函数。集合是从我硬盘驱动器上安装了另一个程序 Anki 的另一个目录导入的。我希望 file_pattern 变量给出这个脚本的目录,而不是当前正在发生的 cpath 的目录。
sys.path.append("C:/Users/Shaun/Documents/Personal_Projects/ankiExperiment/anki-scripting/anki")
from anki.storage import Collection
PROFILE_HOME = os.path.expanduser("C:/Users/Shaun/Desktop/User 1")
cpath = os.path.join(PROFILE_HOME, "collection.anki2")
@eel.expose
def callLoad():
col = Collection(cpath, log=True)
json_pattern = "word_data.json"
file_pattern = os.path.join(os.getcwd(),json_pattern)
load(col,file_pattern)
我已经尝试了很多东西,比如 os.getcwd() 和 os.path.dirname(os.path.realpath( file )) 但是我一直在检索 C:\Users\User\Desktop\User 1\collection.media 这是 cpath 的位置。如何获取最初运行的脚本 ankiAdd.py 的目录?
编辑:
def callLoad():
col = Collection(cpath, log=True)
json_pattern = "word_data.json"
print(os.path.dirname(os.path.realpath(__file__)))
file_pattern = os.path.join(os.getcwd(),json_pattern)
#load(col,file_pattern)
if __name__ == '__main__':
callLoad()
如果我运行这段代码,返回的目录是 C:\Users\Shaun\Desktop\User 1\collection.media 这是我文件顶部设置的目录:
PROFILE_HOME = os.path.expanduser("C:/Users/Shaun/Desktop/User 1")
我正在运行脚本
解决方案
如果我正确理解您的问题,您正在尝试获取您正在导入的文件或模块的位置,并继续获取正在执行导入的文件或模块的位置。这个可以解决!
您导入的任何内容都将具有__file__
属性。例如,如果你有,
import anki
print(anki.__file__)
你会得到anki
模块__init__.py
文件的位置(或者如果anki
只是一个 Python 文件,你会得到文件本身的位置)。
推荐阅读
- sql - 子查询上的自联接然后相同的表性能
- php - 反向搜索全文/类似脏搜索词
- r - 使用 readr::spec_csv 处理大部分空白列
- android - 使用 dagger2 未在 ViewModel 中注入改造服务类
- windows - 使用 powershell 替换 csv 文件列中的值 <0 和 >50
- xamarin - 没有 iOS 签名身份与指定的配置文件(xamarin ios)匹配 - 已尝试现有解决方案。问题未修复
- c++ - 为什么hackerrank说我的输出不正确?
- c# - 如何在网格中设置 50% 的显示器宽度?
- php - 如何在 00:00 在 Google Cloud Daily 上运行 Cron
- python - 从函数中获取输入并将其写入 .txt 文件,然后创建一个函数来关闭文件