如何获取桌面位置?

How to get Desktop location?

我在 Windows 上使用 Python,我希望脚本的一部分将文件从某个目录(我知道它的路径)复制到桌面。

我用过这个:

shutil.copy(txtName, '%HOMEPATH%/desktop')

虽然 txtName 是 txt 文件的名称(带完整路径)。

我收到错误:

IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'

有什么帮助吗?

我希望脚本可以在任何计算机上运行。

您可以使用os.environ["HOMEPATH"]获取路径。现在它实际上是在不替换实际路径的情况下尝试找到 %HOMEPATH%/Desktop

可能是这样的:

shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))

在 Unix 或 Linux 上:

import os
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop') 

在 Windows 上:

import os
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') 

并在您的命令中添加:

shutil.copy(txtName, desktop)

我还不能评论,但是基于 'Desktop' 将位置加入用户路径的解决方案的应用有限,因为桌面可以而且经常被重新映射到非系统驱动器。 要获得真实位置,应使用 windows 注册表...或通过

等 ctypes 的特殊功能

这适用于 Windows 和 Linux:

import os
desktop = os.path.expanduser("~/Desktop")

# the above is valid on Windows (after 7) but if you want it in os normalized form:
desktop = os.path.normpath(os.path.expanduser("~/Desktop"))

试试这个:

import os
file1 =os.environ["HOMEPATH"] + "\Desktop\myfile.txt" 

所有这些答案本质上都是错误的:它们只适用于英语会话。

您应该检查 XDG 目录,而不是假设它总是 'Desktop'

正确答案如下:How to get users desktop path in python independent of language install (linux)

对于 3.5+,您可以使用路径库:

import pathlib

desktop = pathlib.Path.home() / 'Desktop'

@tpearse 接受的答案的补充:

在嵌入式环境中(c++ 程序调用 python 环境)

os.path.join(os.environ["HOMEPATH"], "Desktop")

是唯一有效的方法。好像

os.path.expanduser("~/Desktop")

不是 return 嵌入式环境的可用路径(至少在我的环境中不是;但是 visual studio 中的某些环境设置可能在我的设置中丢失)