Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取桌面位置?_Python_Copy_Desktop_Filepath - Fatal编程技术网

Python 如何获取桌面位置?

Python 如何获取桌面位置?,python,copy,desktop,filepath,Python,Copy,Desktop,Filepath,我在Windows上使用Python,我希望脚本的一部分能够将文件从某个目录(我知道它的路径)复制到桌面 我用了这个: shutil.copy(txtName, '%HOMEPATH%/desktop') 而txtName是txt文件的名称(带完整路径) 我得到一个错误: IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP' 有什么帮助吗 我希望脚本可以在任何计算机上运行。您可以使用os.environ[“HOM

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

我还不能发表评论,但基于使用“桌面”将位置连接到用户路径的解决方案限制了设备,因为桌面可以而且经常被重新映射到非系统驱动器。
要获取实际位置,应使用windows注册表。。。或通过C类型(如

)执行特殊功能这在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目录,而不是假设它总是
“桌面”


以下是正确答案:

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

import pathlib

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

@如果你觉得它有帮助或者解决了你的问题,请投赞成票或者接受。你和你上面的人都有很好的答案。希望我能接受你们两个。现在投票了。非常感谢。在Windows和Linux中,这似乎都有效:
os.path.expanduser(“~/Desktop”)
不需要内部的
os.path.join()
调用。另外,第一个解决方案也适用于Windows:不需要第二个解决方案。@ChauLoi是的,我在Mac上测试过,它提供给您user
os.path.expanduser(“~/Desktop”)的父文件夹
适用于Linux和Windows@dashesy:你应该回答这个问题-它比其他任何一个都好。这在非英语的Windows机器上有效吗?当我在2010年左右检查时,情况并非如此。@EricLebigot我没有非英语的Windows机器要测试,你能告诉我们吗?这将在Windows上生成
'C:\\Users\\user/Desktop'
。。。这将在Win
desktop=os.path.expanduser(“~\\desktop”)
@Sabrina上运行,这是有效的,在较新的Widows中,您可以使用
/
,因为您不必逃避它,所以这是首选。如果您愿意,您可以使用
os.path.normpath
。它在非英语(西班牙语)机器上工作,并且它实际输出Sabrina所说的内容。所有答案(GPCracker除外)都不正确,因为桌面文件夹可以移到HOMEPATH之外。我的桌面不在我的C:\,所有其他选项都不能直接工作。我喜欢这个解决方案!这似乎是实现这一点的现代方法。这个答案本质上是错误的:它只适用于Linux。:)真的:)我可能已经累了,忘了窗户的事。