我为复杂或措辞不当的标题道歉......
我创建了一个小包,通过 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
,这可能吗?我如何获得调用脚本的路径?
我还尝试将相对路径与 一起使用DATA_FOLDER = os.path.join(os.getcwd(), 'data')
,但是如果我这样做会有所不同:
python /path/to/project/main.py
或这个
cd /path/to/script && python main.py
第一个创建数据文件夹,无论我从哪里调用脚本,第二个都“正确”创建它。
这样做的正确方法是什么?
用
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]
. 然后,您可以创建相对于脚本所在文件夹的数据文件夹路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句