如何使用Windows环境变量"pathlib"保存文件?

6

我正在尝试在不同的用户计算机上使用类似于%userprofile%\desktop的win环境变量,然后使用pathlib安全地保存文件。

但是我无法使它起作用,它仍然在运行脚本的目录中保存。

import pathlib
from datetime import datetime

a = r'%userprofile%\desktop\test2' b = 'test' def path(path_name, f_name): date = datetime.now().strftime("%d%m-%H%M%S") file_name = f'{f_name}--{date}.xlsx' file_path = pathlib.Path(path_name).joinpath(file_name) file_dir = pathlib.Path(path_name) try: file_dir.mkdir(parents=True, exist_ok=True) except OSError as err: print(f"无法创建{file_dir}: {err}") return file_path path(a, b)
3个回答

5

pathlibPath.home() 方法,用于扩展到用户的主目录。

from pathlib import Path
print(Path.home())    # On Windows, it outputs: "C:\Users\<username>"

# Build a path to Desktop
desktop = Path.home() / "Desktop"
print(desktop)    # On Windows, it outputs: "C:\Users\<username>\Desktop"

虽然 pathlib 可以处理用户的主目录,但我不知道它是否有与通用 os.path.expandvars() 等效的东西。 - martineau

4

非常漂亮。正是我所寻找的! - Diptangsu Goswami

1

尝试:

import os
a = os.environ['USERPROFILE'] + r'\desktop\test2'
# rest of script....

1
我认为应该像这样编写添加的字面字符串 r'\desktop\test2' - martineau
1
salparadise:好的——在我验证它不能按照你的方式正常工作之后,我已经这样做了。 - martineau
如果我们想要主目录,那么使用 file_dir = pathlib.Path('~/Desktop/test2').expanduser() 并以习惯用语连接它,如 file_path = file_dir / file_name。pathlib 会在 Windows 上将其更改为使用反斜杠。话虽如此,Windows 没有固定的 Unix 主目录约定。为每个用户定义了数十个可单独重定位的文件夹。在这种情况下,“%USERPROFILE%\Desktop”是 FOLDERID_Desktop 的默认位置,但不应依赖它。 - Eryk Sun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接