如何使用 Rust 使用默认程序启动任何文件(如 Python 的 `os.startfile()`)
Posted
技术标签:
【中文标题】如何使用 Rust 使用默认程序启动任何文件(如 Python 的 `os.startfile()`)【英文标题】:How launch any file using default program using Rust (like Python's `os.startfile()`) 【发布时间】:2021-08-08 10:51:04 【问题描述】:python中是否有等效于os.startfile()
的rust方法。例如,我需要使用 rust 启动一个“mp3 文件”。在 python 中是os.startfile('audio.mp3')
。这将打开默认媒体播放器并开始播放该文件。我需要对 Rust 语言做同样的事情。
【问题讨论】:
【参考方案1】:Python 的 os.startfile()
函数仅在 Windows 上可用,它只是 Windows API 中 ShellExecuteW()
的包装。你可以call this function via the winapi
crate。
使用open
crate 是一种更简单、更便携的解决方案。
【讨论】:
@SantoK.Thomasopen
crate 看起来像是通过xdg-open
和其他人明确支持 Windows、MacOS、ios 和其他 Unix 系统。【参考方案2】:
到目前为止,有两种方法可以在多个操作系统平台(Mac、Windows 和 Linux)上运行。我也亲自测试过。方法一:
使用opener
crate (link)
在 Windows 上使用ShellExecuteW
Windows API 函数。在 Mac 上使用系统 open
命令。在其他平台上,使用xdg-open
脚本。系统xdg-open
未使用;而是在此库中嵌入了一个版本。在rs file
(src/main.rs
) 中使用以下代码:
// open a file
let result = opener::open(std::path::Path::new("Cargo.toml"));
println!(":?", result); // for viewing errors if any captured in the variable result
在依赖项部分的“Cargo.toml”文件中使用以下代码:
opener = "0.4.1"
方法二:
使用open
crate (link)
使用此库可使用系统上配置的程序打开路径或 URL。它相当于运行以下之一:open <path-or-url>
(OSX)、start <path-or-url>
(Windows)、xdg-open <path-or-url> || gio open <path-or-url> || gnome-open <path-or-url> || kde-open <path-or-url> || wslview <path-or-url>
(Linux)。
在rs file
(src/main.rs
) 中使用以下代码:
// to open the file using the default application
open::that("Cargo.toml");
// if you want to open the file with a specific program you should use the following
open::with("Cargo.toml", "notepad");
在依赖项部分的“Cargo.toml”文件中使用以下代码:
open = "1.7.0"
希望对所有人都有效。
【讨论】:
以上是关于如何使用 Rust 使用默认程序启动任何文件(如 Python 的 `os.startfile()`)的主要内容,如果未能解决你的问题,请参考以下文章
如何定期将shell脚本的结果设置为Kubernetes Cronjob的参数