我有以下工作目录,从中运行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")
我正在从
运行脚本答案 0 :(得分:1)
如果我正确理解了您的问题,则您正在尝试获取要导入的文件或模块的位置,并继续获取正在执行的文件或模块的位置。这可以解决!
您导入的所有内容都将具有__file__
属性。例如,如果您有
import anki
print(anki.__file__)
您将获得anki
模块的__init__.py
文件的位置(或者,如果anki
只是Python文件,则将获得文件本身的位置)。
答案 1 :(得分:0)
文件返回执行脚本的位置。你可以试试看。
print(__file__)