我为标题复杂或措辞不当而致歉...
我创建了一个小包装,可通过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
第一个在我从哪里调用脚本的地方创建数据文件夹,第二个“正确”创建它。
什么是正确的方法?
答案 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]
中。然后,您可以相对于脚本所在的文件夹创建数据文件夹的路径。