关键词:
【中文标题】跨平台桌面目录路径?【英文标题】: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、点击复制即可。问题二:如何快速地复制文件路径右击文件点击【属性】找到【位置:】选中,... 查看详情