Python软件包,使用该软件包在脚本文件夹中创建子文件夹

时间:2019-07-16 07:35:06

标签: python python-3.x

我为标题复杂或措辞不当而致歉...

我创建了一个小包装,可通过pipy.org获得。在此程序包中,我刮了一些数据,我想将已刮数据保存在使用该程序包的脚本的文件夹中

我目前在包装中做到了这一点

DATA_FOLDER = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data')

但是当我通过pip install mypackage安装软件包并在

中使用它时
  

/path/to/project/main.py

from mypackage import MyPackage
...
mp = MyPackage()
print(mp.DATA_FOLDER)

它给了我/usr/local/lib/python3.6/dist-packages/mypackage/data,这显然是安装软件包的地方。

但是我希望它在data中创建/path/to/project/data文件夹,这可能吗?我如何获得调用脚本的路径?

我还尝试过将{em> relative 路径与DATA_FOLDER = os.path.join(os.getcwd(), 'data')一起使用,但是如果这样做,则会有所不同:

python /path/to/project/main.py

或这个

cd /path/to/script && python main.py

第一个在我从哪里调用脚本的地方创建数据文件夹,第二个“正确”创建它。

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

使用

script_folder = os.path.dirname(os.path.abspath(sys.argv[0]))

如果您喜欢os.path

script_folder = pathlib.Path(sys.argv[0]).absolute().parent

对于更喜欢pathlib的人。

这利用了以下事实:主脚本的文件名存储在sys.argv[0]中。然后,您可以相对于脚本所在的文件夹创建数据文件夹的路径。