跨平台桌面目录路径?

     2023-02-23     282

关键词:

【中文标题】跨平台桌面目录路径?【英文标题】:Cross-platform Desktop directory path? 【发布时间】:2011-11-16 06:19:50 【问题描述】:

有没有办法以跨平台的方式获取桌面目录路径,最好只使用标准模块,在 Python 中?

我目前的 Mac OS X + Windows 解决方案是使用sys.platform 检查哪个系统正在运行 Python,然后执行以下操作:

Mac OS X 可以使用os.path.join(os.path.expanduser('~'), 'Desktop') 处理。 Windows可以使用非标准模块win32com,或者ctypes依赖模块winpaths;有标准的替代品吗? 那么 Linux 呢?

我会对适用于 Mac OS X、Windows 和 Linux 的解决方案感到满意。

【问题讨论】:

它们是不同的操作系统。微不足道的答案几乎普遍都是“否”,没有适用于这两个操作系统系列的标准。 Windows 是非标准的。您是否在寻求一种将差异最小化的方法?请发布您正在使用的代码,以便我们可以 - 也许 - 简化它。 让我们continue this discussion in chat 【参考方案1】:

在windows下面,用户的home是%HOMEPATH%,相当于linux和Mac的~。在此下方,有一个文件夹 Desktop,就像在 Mac 上一样。 Python 在 Windows 上自动将 ~ 转换为 %HOMEPATH%,因此您的 Mac 命令将在 Mac 和 Windows 上开箱即用。

在 Linux 上,这有点棘手。首先,了解您正在运行的 Linux 机器可能没有桌面,因此没有用户桌面文件夹。如果你有窗口管理器,它可能会也可能不会遵循~\Desktop 范式。 The wikipedia entry on window managers 更详细,包括一些子链接中几个更流行的 X 窗口管理器之间的比较。

最好的办法是退后一步,问问自己我为什么想要/需要用户桌​​面文件夹?是在安装过程中创建快捷方式吗?使用安装编写器实用程序(例如 nsis)处理这些细节可能会更好。如果是用于文件存储,即使是临时的,您可能需要重新考虑您的设计。或者您是否正在寻找一些东西,在这种情况下,文件系统搜索可能是一种方法,而不是脆弱的单个文件夹检查。

像大多数事情一样,这一切都取决于你想要完成什么。

正如 EOL 在他的评论中指出的那样,Windows 比最初看起来要复杂一些。 His link to a more complete article on the Windows Desktop 文件夹包含有关桌面文件夹本地化的更多详细信息。对于国际应用程序的构建者来说,考虑到这一点非常重要,要么使用内置于其工具集中的自动本地化,要么避免使用它。

【讨论】:

感谢 Linux 上的 cmets。至于 Windows,它有时确实将桌面置于本地化目录名称 (bytes.com/topic/python/answers/…) 下,所以看起来 win2com 方法更好,不是吗? 我对桌面路径感兴趣,因为 (1) 用户运行创建许多输出文件的程序(从 USB 密钥)。这些文件不应转到 USB 密钥,因为用户可能无法保留密钥。 (2) 这些输出文件也应该对用户很容易“可见”,以便他很容易找到它们,这就是桌面的想法。 @EOL 感谢您的链接,我不知道这一点。对于输出,告诉用户您将文件放在哪里和/或打开资源管理器窗口以显示目录不是更简单吗?理想情况下,我们应该创建一个新的子文件夹,以避免将新文件混入他们的文件中,以防他们想轻松删除它们。 是的,这些程序确实创建了一个公共输出目录,以避免将它们的输出与用户的文件混合。不幸的是,打开资源管理器窗口并不实用,因为用户多次运行多个程序,而且他们无法承受每次都弹出一个窗口。 :) 不过,感谢您分享想法。 :) @EOL 没问题,虽然我只是被一个想法打动了。如果用户必须从 USB 密钥运行它,那么他们知道程序何时运行。大概是因为完成后的消息,或者是受过教育的用户群,他们也会知道他们需要对输出文件做一些事情。如果他们实际上并不需要它们,也许输出目录应该更像是一个长期存储的东西?【参考方案2】:

我使用了以下内容:

import os
desktop_file = os.path.expanduser("~/Desktop/myfile.txt")

在 Unix 和 Windows 上,返回带有初始组件的参数 ~ 或 ~user 替换为该用户的主目录。

参考:os.path.expanduser

【讨论】:

这个答案实际上返回了PYTHON DEFAULT PATH ENVIRONMENT,它对我不起作用。

有没有办法在 Cocoa 中更改用户桌面目录路径值?

】有没有办法在Cocoa中更改用户桌面目录路径值?【英文标题】:IsthereawaytochangeuserdesktopdirectorypathvalueinCocoa?【发布时间】:2011-06-2515:59:28【问题描述】:我知道有NSDesktopDirectory可以让我找到当前用户桌面目录的路径,但是这个... 查看详情

检查路径上的对象是不是是跨平台的文件或目录?

】检查路径上的对象是不是是跨平台的文件或目录?【英文标题】:Checkifobjectatapathisafileordirectorycrossplatform?检查路径上的对象是否是跨平台的文件或目录?【发布时间】:2020-07-1202:39:04【问题描述】:您可以使用stat()函数来检... 查看详情

17-ubuntu-文件和目录命令-切换目录-相对路径和绝对路径

...面不是/或者~,表示相对当前目录所在的目录位置.例:当前桌面目录下,通过相对路径切换到桌面目录下的Entertainment目录 2.绝对路径:在输入路径时,最前面是/或者~,表示从根目录或家目录开始的具体位置.例:从Entertainment目录通过... 查看详情

控制台中的电子错误““路径”参数必须是字符串类型”

...intheconsole【发布时间】:2021-01-2700:05:04【问题描述】:《跨平台桌面应用程序》一书中的电子应用程序代码,旨在向浏览器显示用户文件目录,就像在桌面资源管理器应用程序中一样。constos=require 查看详情

如何在 Python 的不同平台上创建相同的目录路径?

】如何在Python的不同平台上创建相同的目录路径?【英文标题】:HowtocreatesamepathtodirectoryondifferentplatformsinPython?【发布时间】:2019-12-2907:20:40【问题描述】:在我的一段代码中,有很多情况下我有以下行\'/home/myname/directory\'例如... 查看详情

在vb中如何读取到桌面的路径?

现在需要在VB中读取到桌面的路径并赋值到某个变量中(我用的是VB6.0)请问该怎么做才好啊?谢谢发现jin_mz的代码相当有效!VB6.0可用DriveListBox控件和DirListBox控件组合使用来获取桌面的路径。DriveListBox控件,在运行时,由于有Dr... 查看详情

修改mac系统的默认截图保存路径到指定目录

 注:此文仅针对mac系统如果你是mac用户,会发现桌面经常一团糟,桌面到处都是平时的截图(mac系统的截图是command+shift+3和command+shift+4两个快捷命令)之前一直只知道截图的默认保存路径是在桌面,每次都是只能默默地定时... 查看详情

模块(代码片段)

...os.path是os模块下专门用于处理路径相关的  python是一门跨平台语言,由于每个平台路径规则不同  需要一个模块来使得路径可以自动根据平台变化  path模块仅仅是对路径(字符串)进行操作不会直接操作文件importos#print(os.get... 查看详情

qt软件开发:获取下载桌面临时文件....等系统默认目录(代码片段)

QT版本:5.12.6头文件:#include<QStandardPaths>示例代码:qDebug()<<"系统字体目录路径:"<<QStandardPaths::standardLocations(QStandardPaths::FontsLocation);qDebug()<<"系统桌面目录路径:" 查看详情

模块04

...h  是os模块下专门用于处理路径相关的  python是一门跨平台语言,由于每个平台路径规则不同  需要一个模块来使路径可以自动根据平台变化  path模块仅仅使对路径进行操作,不会直接操作文件  os.path.abspath()  返... 查看详情

桌面上的图标路径都一样怎么改回来?

...按钮,修复完成以后,根据提示重启系统或者【F5】刷新桌面如果安装以后金山网盾快捷方式不能打开,请尝试手工执行(1)你可以到金山网盾的安装目录(一般是C:\ProgramFiles\Kingsoft\WebShield)(2)运行金山网盾主程序kws... 查看详情

linux的桌面文件夹属于系统的哪个目录,比如我在桌面新建的文件夹?

...的当前用户名里面的Desktop---举例吧:我的用户名是duzc2我桌面上有个文件夹是zhongbei我的系统是中文的,所以zhongbei这个文件夹的路径是:/home/duzc2/桌面/zhongbei追问实际上,我的/home/用户名/下面什么都没有······追答... 查看详情

在 Python 中获取临时目录的跨平台方法

】在Python中获取临时目录的跨平台方法【英文标题】:Cross-platformwayofgettingtempdirectoryinPython【发布时间】:2010-10-2506:34:03【问题描述】:在Python2.6中是否有一种跨平台的方式来获取temp目录的路径?例如,在Linux下为/tmp,而在XP下... 查看详情

如何获取桌面位置?

】如何获取桌面位置?【英文标题】:HowtogetDesktoplocation?【发布时间】:2016-03-2010:48:16【问题描述】:我在Windows上使用Python,我希望脚本的一部分将文件从某个目录(我知道它的路径)复制到桌面。我用过这个:shutil.copy(txtName,... 查看详情

web前端项目的跨平台桌面客户端打包方案之——cef框架

文章目录1、什么是CEF2、测测你电脑里的CEF3、从0开始的CEF入门实例1、什么是CEFCEF是什么概念ChromiumEmbeddedFramework(CEF)是个基于GoogleChromium项目的开源Webbrowser控件。CEF的目标是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromiu... 查看详情

web前端项目的跨平台桌面客户端打包方案之——cef框架

文章目录1、什么是CEF2、测测你电脑里的CEF3、从0开始的CEF入门实例1、什么是CEFCEF是什么概念ChromiumEmbeddedFramework(CEF)是个基于GoogleChromium项目的开源Webbrowser控件。CEF的目标是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromiu... 查看详情

gitbash修改默认路径

...录。修改GitBash的默认路径,不需要每次切换了。方法:桌面GitBash快捷方式,右键-->属性-->“快捷方式”标签1,修改“起止位置”到目标路径2,删除“目标”路径后面的--cd-to-home重新运行GitBash,已被修改。 查看详情

怎样复制文件路径

参考技术A问题一:如何快速复制文件、文件夹路径?以桌面快捷方式为例的方法:1、右击快捷方式--属性。2、点击打开--目标。3、点击复制即可。问题二:如何快速地复制文件路径右击文件点击【属性】找到【位置:】选中,... 查看详情