如何获取桌面位置?

问题描述 投票:0回答:10

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

我用的是这个:

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

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

我收到错误:

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

有什么帮助吗?

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

python copy desktop filepath
10个回答
61
投票

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

35
投票

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

32
投票

您可以使用

os.environ["HOMEPATH"]
来获取路径。现在它实际上是在尝试找到
%HOMEPATH%/Desktop
而不替换实际路径。

也许类似:

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

30
投票

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

import pathlib

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

14
投票

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


6
投票

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

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

'Desktop'

这是正确的答案:如何在Python中独立于语言安装(linux)获取用户桌面路径


1
投票

试试这个:

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

0
投票

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

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

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

是唯一有效的。好像

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

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


0
投票

简单优雅试试这个来访问桌面中的文件:

import os
import pathlib
import pandas as pd

desktop = pathlib.Path.home() / 'Desktop' / "Panda's" / 'data'
print(desktop) #check you path correct ?
data = pd.read_csv(os.path.joinn(desktop),'survey_results_public.csv')

恭喜!


0
投票
def get_desktop_path():
    import platform
    if platform.system() == 'Windows':
        try:
            import winreg
            reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
            desktop = winreg.QueryValueEx(reg_key, 'Desktop')[0]
            winreg.CloseKey(reg_key)
        except:
            desktop = "None"
    else:
        from pathlib import Path
        desktop = Path.home() / 'Desktop'
        if not os.path.exists(desktop):
            desktop = os.path.normpath(os.path.expanduser("~/Desktop"))
    if not os.path.exists(desktop):
        desktop = os.path.normpath(os.path.expanduser("~"))
        print(f"архив будет сохранен сюда: {desktop}")
    else:
        print(f"архив будет сохранен на рабочий стол")
    return desktop
© www.soinside.com 2019 - 2024. All rights reserved.