我有以下代码:
import datetime as date
import os
import pdfkit
import getpass #Gets me current username
username = getpass.getuser()
path = f"/home/{username}/Data"
relative_path = os.path.relpath(path, os.getcwd())
destination = os.path.join(relative_path, 'data.pdf')
pdfkit.from_url('www.google.com', f'{destination}/data.pdf')
我希望将pdf保存在相当于/home/[username]/datafolder
的Windows中。我真的不需要使用linux或mac,但是出于学术原因,我决定使用相对路径方法。
此代码对我来说很有意义,但由于某些原因,它不是我想要的目录,因为当我以这种方式指定路径时,pdf生成器会生成错误。
Error: Unable to write to destination
Exit with code 1, due to unknown error.
我知道错误是在代码的最后一行中,我指定了'/relative_path/data.pdf
'。您能否建议我如何解决此问题?
更新1:
更新2:
我尝试过:
from pathlib import Path
destination = Path.home()
try:
os.mkdir(destination\Data)
except OSError as error:
print(error)
但是它仍然没有指向目录Data
更新3我知道我越来越近:
import pdfkit
import datetime as date
import calendar
import os.path
import getpass
username = getpass.getuser()
path = f"/home/{username}/Data"
os.makedirs(relative_path, exist_ok=True)
#start = os.getcwd()
relative_path = os.path.relpath(path, os.getcwd())
destination = os.path.join(relative_path, 'data.pdf')
pdfkit.from_url('www.google.com', f'{relative_path}/data.pdf')
此时执行了代码,但是未创建文件夹Data
,无法找到data.pdf
。我的确没有成功运行:
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
关于如何使它正常工作的任何想法?
也许您可以将最后一行更改为:
pdfkit.from_url('www.google.com', f'{relative_path}/data.pdf')
为了使其保存到主目录。
也许问题是该目录不存在。您可以使用os.makedirs创建目录,并在目录已经存在的情况下使用exist_ok = True标志。像这样:
import datetime as date
import os
import pdfkit
import getpass #Gets me current username
username = getpass.getuser()
path = f"/home/{username}/Data"
os.makedirs(path, exist_ok=True)
pdfkit.from_url('www.google.com', f'{path}/data.pdf')
Windows中的用户文件夹存储在“ / Users / {username} / *”中。我不知道您是否要使它与多个操作系统兼容,但是如果您只想使其在Windows上运行,请尝试:
path = f"/Users/{username}/Data"
start = f"/Users/{username}"
希望它起作用。:)
编辑:要获取用户的主目录(无论使用什么操作系统,都可以使用)
from pathlib import Path
home = str(Path.home())
抱歉,后期编辑。