跳转到主要内容

轻松选择存储Python包数据的位置。

项目描述

PyStow

Build status PyPI - Python Version License Documentation Status DOI Code style: black

👜 轻松选择存储Python代码数据的位置。

🚀 入门

为您的应用程序获取一个目录。

import pystow

# Get a directory (as a pathlib.Path) for ~/.data/pykeen
pykeen_directory = pystow.join('pykeen')

# Get a subdirectory (as a pathlib.Path) for ~/.data/pykeen/experiments
pykeen_experiments_directory = pystow.join('pykeen', 'experiments')

# You can go as deep as you want
pykeen_deep_directory = pystow.join('pykeen', 'experiments', 'a', 'b', 'c')

如果您经常重复使用相同的目录结构,可以将它们保存在一个模块中

import pystow

pykeen_module = pystow.module("pykeen")

# Access the module's directory with .base
assert pystow.join("pykeen") == pystow.module("pykeen").base

# Get a subdirectory (as a pathlib.Path) for ~/.data/pykeen/experiments
pykeen_experiments_directory = pykeen_module.join('experiments')

# You can go as deep as you want past the original "pykeen" module
pykeen_deep_directory = pykeen_module.join('experiments', 'a', 'b', 'c')

通过添加name关键字参数获取应用程序的文件路径。这样PyStow就知道了要自动创建哪些父目录。这适用于pystow或您使用pystow.module创建的任何模块。

import pystow

# Get a directory (as a pathlib.Path) for ~/.data/indra/database.tsv
indra_database_path = pystow.join('indra', 'database', name='database.tsv')

确保互联网上的文件在您的应用程序目录中可用

import pystow

url = 'https://raw.githubusercontent.com/pykeen/pykeen/master/src/pykeen/datasets/nations/test.txt'
path = pystow.ensure('pykeen', 'datasets', 'nations', url=url)

确保互联网上的表格数据文件可用,并加载它以供使用(需要pip install pandas

import pystow
import pandas as pd

url = 'https://raw.githubusercontent.com/pykeen/pykeen/master/src/pykeen/datasets/nations/test.txt'
df: pd.DataFrame = pystow.ensure_csv('pykeen', 'datasets', 'nations', url=url)

确保互联网上的逗号分隔表格数据文件可用,并加载它以供使用(需要pip install pandas

import pystow
import pandas as pd

url = 'https://raw.githubusercontent.com/cthoyt/pystow/main/tests/resources/test_1.csv'
df: pd.DataFrame = pystow.ensure_csv('pykeen', 'datasets', 'nations', url=url, read_csv_kwargs=dict(sep=","))

确保互联网上的RDF文件可用,并加载它以供使用(需要pip install rdflib

import pystow
import rdflib

url = 'https://ftp.expasy.org/databases/rhea/rdf/rhea.rdf.gz'
rdf_graph: rdflib.Graph = pystow.ensure_rdf('rhea', url=url)

另请参阅pystow.ensure_excel()pystow.ensure_rdf()pystow.ensure_zip_df()pystow.ensure_tar_df()

如果您的数据与大量不同的文件一起存储在存档中,您可以确保存档已下载并从中获取特定文件

import numpy as np
import pystow

url = "https://cloud.enterprise.informatik.uni-leipzig.de/index.php/s/LHPbMCre7SLqajB/download/MultiKE_D_Y_15K_V1.zip"
# the path inside the archive to the file you want
inner_path = "MultiKE/D_Y_15K_V1/721_5fold/1/20210219183115/ent_embeds.npy"
with pystow.ensure_open_zip("kiez", url=url, inner_path=inner_path) as file:
    emb = np.load(file)

请参阅 pystow.module.ensure_open_lzma()pystow.module.ensure_open_tarfile()pystow.module.ensure_open_gz()

⚙️️ 配置

默认情况下,数据存储在 $HOME/.data 目录中。默认情况下,<app> 应用程序将创建 $HOME/.data/<app> 文件夹。

如果您想在家目录中使用不同的文件夹名来替换 .data,可以设置 PYSTOW_NAME 环境变量。例如,如果您设置 PYSTOW_NAME=mydata,那么为 pykeen 应用程序编写的以下代码将创建 $HOME/mydata/pykeen/ 目录

import os
import pystow

# Only for demonstration purposes. You should set environment
# variables either with your .bashrc or in the command line REPL.
os.environ['PYSTOW_NAME'] = 'mydata'

# Get a directory (as a pathlib.Path) for ~/mydata/pykeen
pykeen_directory = pystow.join('pykeen')

如果您想指定一个完全自定义的目录,该目录不相对于您的家目录,可以设置 PYSTOW_HOME 环境变量。例如,如果您设置 PYSTOW_HOME=/usr/local/,那么为 pykeen 应用程序编写的以下代码将创建 /usr/local/pykeen/ 目录

import os
import pystow

# Only for demonstration purposes. You should set environment
# variables either with your .bashrc or in the command line REPL.
os.environ['PYSTOW_HOME'] = '/usr/local/'

# Get a directory (as a pathlib.Path) for /usr/local/pykeen
pykeen_directory = pystow.join('pykeen')

注意:如果您设置了 PYSTOW_HOME,则 PYSTOW_NAME 将被忽略。

X Desktop Group (XDG) 兼容性

虽然 PyStow 的主要目标是使应用程序数据更加透明和可见,但一些用户可能希望使用 XDG 规范 来存储他们的应用程序数据。

如果您将环境变量 PYSTOW_USE_APPDIRS 设置为 trueTrue,则将使用 appdirs 包根据 用户数据目录 选项选择基本目录。这仍然可以通过 PYSTOW_HOME 覆盖。

🚀 安装

最新版本可以从 PyPI 安装

$ pip install pystow

注意:自 v0.3.0 版本起,Python 3.6 不再官方支持(其生命周期已于 2021 年 12 月结束)。目前,pystow 在 py36 上可能仍然可以工作,但这只是巧合。

最新代码和数据可以直接从 GitHub 安装

$ pip install git+https://github.com/cthoyt/pystow.git

要开发模式安装,请使用以下

$ git clone git+https://github.com/cthoyt/pystow.git
$ cd pystow
$ pip install -e .

⚖️ 许可证

本包中的代码根据 MIT 许可证授权。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

pystow-0.5.6.tar.gz (45.9 kB 查看哈希值)

上传时间

构建分发版

pystow-0.5.6-py3-none-any.whl (33.0 kB 查看哈希值)

上传时间 Python 3

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页面