如何获取桌面位置?
Posted
技术标签:
【中文标题】如何获取桌面位置?【英文标题】: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 之外。 【参考方案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://***.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 中的一些环境设置)
【讨论】:
以上是关于如何获取桌面位置?的主要内容,如果未能解决你的问题,请参考以下文章