所以我正在python中为自己编写一个脚本,从Ao3下载作品。我有这个安装文件
{
"username": "username",
"password": "password",
"downloadsPath": "~/Downloads/ao3",
"format": "epub"
}
我的问题是下载路径变量。在我的草稿中,我做了以下操作:
def main():
setup = openJson(os.path.join(os.path.dirname(__file__), "setup.json"))
os.makedirs(setup["downloadsPath"], exist_ok=True)
以确保下载目的地存在。除了不是在/home/user/Downloads/
中创建ao3文件夹它在CWD中创建了一个新的~/
文件夹,因此类似于/cwd/~/Downloads/ao3
我不知道它为什么开始这样做,因为在我开始写剧本的其余部分之前,一切都很好,但在写了一天剧本之后,这种行为就开始了。
正如我在评论中所说,makedirs()
不会自动处理名为~
的文件夹到用户主目录的扩展,但您可以通过os.path.expanduser()
轻松地自己完成,如下所示:
import os
setup = {
"username": "username",
"password": "password",
"downloadsPath": "~/Downloads/ao3",
"format": "epub"
}
downloadsPath = os.path.expanduser(setup["downloadsPath"])
print(downloadsPath)
os.makedirs(downloadsPath, exist_ok=True)
您也可以使用面向对象的pathlib
模块(我强烈建议您学习并使用它(执行类似的操作:
from pathlib import Path
downloadsPath = Path(setup["downloadsPath"]).expanduser()
print(downloadsPath)
downloadsPath.mkdir(parents=True, exist_ok=True)