如何在Go中将路径数组通过管道传入外部命令执行?
实现方法
核心思路:mpv 的 --playlist=- 参数会从标准输入读取播放列表,要求每行一个文件路径。只需将你的路径数组按行输出,再通过管道传递给 mpv 即可实现顺序播放。
1. Bash 脚本实现
如果你的路径数组是 Bash 环境中的数组:
# 定义路径数组 files=("file1.mp4" "file2.mp4" "fileN.mp4") # 将数组元素逐行输出并管道传给 mpv printf "%s\n" "${files[@]}" | mpv --playlist=-
2. Go 语言实现
如果是 Go 中的 []string 类型数组:
package main import ( "os" "os/exec" "strings" ) func main() { files := []string{"file1.mp4", "file2.mp4", "fileN.mp4"} // 将数组转为每行一个路径的字符串 playlist := strings.Join(files, "\n") + "\n" // 启动 mpv 进程,绑定标准输入 cmd := exec.Command("mpv", "--playlist=-") cmd.Stdin = strings.NewReader(playlist) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr // 执行命令 if err := cmd.Run(); err != nil { panic(err) } }
3. Python 实现
如果是 Python 中的列表:
import subprocess files = ["file1.mp4", "file2.mp4", "fileN.mp4"] # 将列表元素按行拼接并编码 playlist = "\n".join(files).encode() # 启动 mpv,通过标准输入传递播放列表 subprocess.run(["mpv", "--playlist=-"], input=playlist)
注意事项
- 若路径包含空格或特殊字符,上述方法均能正确处理(按行传递避免了命令参数拆分的问题)
- 确保 mpv 已安装并添加到系统环境变量
PATH中
内容的提问来源于stack exchange,提问作者user4616986
相关产品推荐
相关产品推荐

