相对路径未指向所需目录

问题描述 投票:0回答:3

我有以下代码:

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:

如@Matthias所建议,我已经更新了代码,但仍然出现相同的错误

更新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    

关于如何使它正常工作的任何想法?

python python-3.x operating-system relative-path pdfkit
3个回答
1
投票

也许您可以将最后一行更改为:

pdfkit.from_url('www.google.com', f'{relative_path}/data.pdf')

为了使其保存到主目录。


1
投票

也许问题是该目录不存在。您可以使用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')

0
投票

Windows中的用户文件夹存储在“ / Users / {username} / *”中。我不知道您是否要使它与多个操作系统兼容,但是如果您只想使其在Windows上运行,请尝试:

path = f"/Users/{username}/Data"
start = f"/Users/{username}"

希望它起作用。:)

编辑:要获取用户的主目录(无论使用什么操作系统,都可以使用)

from pathlib import Path
home = str(Path.home())

抱歉,后期编辑。

© www.soinside.com 2019 - 2024. All rights reserved.