在 python 中,如何将 1 个或多个文件作为具有绝对路径的参数拖放到我的脚本中? (适用于 windows、linux 和 mac)

Posted

技术标签:

【中文标题】在 python 中,如何将 1 个或多个文件作为具有绝对路径的参数拖放到我的脚本中? (适用于 windows、linux 和 mac)【英文标题】:In python, how do I drag and drop 1 or more files onto my script as arguments with absolute path? (for windows, linux, and mac) 【发布时间】:2011-02-09 06:11:32 【问题描述】:

我正在编写一个没有 GUI 的简单 Python 脚本。我希望能够将多个文件拖放到我的 python 脚本中,并可以访问它们在脚本中的绝对路径。如何在 Mac、Linux 和 Windows 中执行此操作?暂时只用 Mac 就可以了。

我用谷歌搜索了这个问题,只找到了一个相关的问题,但这太令人困惑了。我目前正在运行 Mac OS X Snow Leopard。

非常感谢任何帮助。

谢谢!

【问题讨论】:

【参考方案1】:

对于 OS X,最直接的方法是将脚本作为应用程序包的一部分运行 (.app)。您可以使用 py2app 之类的东西来构建 python 应用程序。另一种方法可能是使用AutomatorAppleScript 创建一个应用程序,该应用程序接受输入参数并将它们传递给python 脚本。使用 Automator 的示例是 here。

【讨论】:

我的希望是制作一个可以在多个系统上运行的 python 脚本,它只检查您所在的系统并执行适当的代码 正如歌曲所说,你不能总是得到你想要的。在 OS X、AFAIK 上,整个拖放操作都与应用程序机制相关联。我故意没有提到的另一种方法是拥有一个帮助应用程序,它将启动并运行一个 python 脚本。 python.org 发行版提供了这样一个帮助应用程序,但它存在安全风险,不鼓励使用(并且可能会在未来的 python 版本中删除)。这是一个风险,因为它可以启动任何 Python 脚本,甚至是 Web 浏览器所拥有的脚本。有一个特定的应用程序来包装你的脚本会更好、更安全。 啊好吧。太糟糕了,我不能让它通用。我将继续尝试 py2app。感谢您的信息!【参考方案2】:

通常,当您将文件拖到脚本/可执行文件上时,操作系统会将指向该文件的路径作为命令行参数传递。检查sys.argv

【讨论】:

这就是我的想法,但是当将鼠标悬停在带有文件的脚本上时,脚本不会突出显示。就像我实际上不能将文件放到它上面一样。我在上面做了一个 chmod +x 并在顶部有“#!/usr/bin/env python # encoding: utf-8”,如果这有什么不同的话【参考方案3】:

这真的是独立于python的。这完全取决于您使用的文件浏览器以及它如何支持拖放。

【讨论】:

那么我将如何使用 Mac OS 的 Finder 文件浏览器来支持这一点?

以上是关于在 python 中,如何将 1 个或多个文件作为具有绝对路径的参数拖放到我的脚本中? (适用于 windows、linux 和 mac)的主要内容,如果未能解决你的问题,请参考以下文章

iOS 将 2 个或多个音频文件合并(混合)为 wav 格式

如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?

如何将 2 个或多个 Http 隧道(例如 ngrok)与 2 个或多个 .net 不同的应用程序(需要处理图形 api 的不同订阅)一起使用?

如何在 PHP 中以 2 个或多个连续空格分割字符串

在 Python 中将多个变量附加到列表中

如何在单个查询中组合 2 个或多个桥接表