如何获取桌面位置?

Ben*_*n L 12 python desktop copy filepath

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

我用过这个:

shutil.copy(txtName, '%HOMEPATH%/desktop')
Run Code Online (Sandbox Code Playgroud)

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

我收到错误:

IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

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

小智 28

在Unix或Linux上:

import os
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop') 
Run Code Online (Sandbox Code Playgroud)

在Windows上:

import os
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') 
Run Code Online (Sandbox Code Playgroud)

并添加您的命令:

shutil.copy(txtName, desktop)
Run Code Online (Sandbox Code Playgroud)

  • 在 Windows 和 Linux 中这似乎都有效: `os.path.expanduser("~/Desktop")` (3认同)
  • 不需要内部的os.path.join()调用。同样,第一种解决方案也适用于Windows:无需第二种解决方案。 (2认同)

小智 15

您可以使用os.environ["HOMEPATH"]获取路径.现在它确实试图找到%HOMEPATH%/Desktop而不是替换实际路径.

也许是这样的:

shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))
Run Code Online (Sandbox Code Playgroud)

  • `os.path.expanduser("〜/ Desktop")`适用于Linux和Windows (12认同)
  • @dashesy:你应该把这个作为答案 - 它比其他任何一个都好。 (2认同)

joh*_*son 15

对于 3.5+,您可以使用 pathlib:

import pathlib

desktop = pathlib.Path.home() / 'Desktop'
Run Code Online (Sandbox Code Playgroud)

  • 我的桌面不在 C:\ 上,并且所有其他选项都无法直接使用。我喜欢这个解决方案! (2认同)
  • 这似乎是执行此操作的现代方法。 (2认同)

das*_*esy 9

这适用于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"))
Run Code Online (Sandbox Code Playgroud)

  • 这将在 Windows 上生成 `'C:\\Users\\user/Desktop'` ...这将在 Win 上工作 `desktop = os.path.expanduser("~\\Desktop")` (2认同)
  • 它确实可以在非英语(西班牙语)机器上运行,并且它实际上输出 Sabrina 所说的内容。 (2认同)

小智 7

我还不能发表评论,但基于将位置连接到用户路径与“桌面”的解决方案具有有限的设备,因为桌面可以并且经常被重新映射到非系统驱动器。要获得真实位置,应使用 Windows 注册表...或通过 ctypes 等特殊功能,如/sf/answers/43884921/


Sal*_*dar 6

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

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

这是正确的答案:How to get usersdesktop path in python Independent of language install (linux)

  • 这个答案本质上是错误的:它只适用于 Linux。:) (2认同)