【问题标题】:How to get Desktop location?如何获取桌面位置?
【发布时间】:2016-03-20 10:48:16
【问题描述】:

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

我用过这个:

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

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

我得到错误:

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

有什么帮助吗?

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

【问题讨论】:

  • 所有答案(除了 GPCracker)都不正确,因为桌面文件夹可以移到 HOMEPATH 之外。

标签: python copy desktop filepath


【解决方案1】:

在 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)

【讨论】:

  • @BenL 如果您觉得它有帮助或解决了您的问题,请投票或接受。
  • 你和你上面的那个人都有很好的答案。希望我能接受你们俩。现在投了赞成票。谢谢!
  • 在 Windows 和 Linux 中这似乎都有效:os.path.expanduser("~/Desktop")
  • 不需要内部的os.path.join() 调用。此外,第一个解决方案也适用于 Windows:不需要第二个解决方案。
  • @ChauLoi 是的,我在 Mac 上测试过,它为您提供了用户的父文件夹
【解决方案2】:

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

可能是这样的:

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

【讨论】:

  • os.path.expanduser("~/Desktop") 适用于 Linux 和 Windows
  • @dashesy:你应该这样回答——它比其他任何一个都好。
【解决方案3】:

这适用于 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"))

【讨论】:

  • 这可以在非英语 Windows 机器上工作吗?当我在 2010 年左右回来查看时,情况并非如此。
  • @EricLebigot 我没有非英语的 Windows 机器可以测试,你能告诉我们吗?
  • 这将在 Windows 上产生 'C:\\Users\\user/Desktop' ... 这将在 Win desktop = os.path.expanduser("~\\Desktop") 上工作
  • @Sabrina 是有效的,在较新的 Widows 中,您可以使用 /,这是首选,因为您不必逃避它。如果您愿意,可以使用os.path.normpath
  • 它在非英语(西班牙语)机器上工作,它实际上输出了 Sabrina 所说的内容。
【解决方案4】:

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

import pathlib

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

【讨论】:

  • 我的桌面不在我的 C:\ 上,并且所有其他选项都不能直接使用。我喜欢这个解决方案!
  • 这似乎是现代的做法。
【解决方案5】:

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

【讨论】:

    【解决方案6】:

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

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

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

    【讨论】:

    • 这个答案本质上是错误的:它只适用于 Linux。 :)
    • True :) 我可能已经累了,忘记了一点关于 windows 的事情。
    【解决方案7】:

    试试这个:

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

    【讨论】:

      【解决方案8】:

      只是@tpearse 接受答案的附录:

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

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

      是唯一有效的。好像

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

      不返回嵌入式环境的可用路径(至少在我的环境中没有;但我的设置中可能缺少 Visual Studio 中的一些环境设置)

      【讨论】:

        猜你喜欢
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多