【问题标题】:Drag and drop batch file equivalent in Linux [closed]在Linux中拖放等效的批处理文件[关闭]
【发布时间】:2013-11-14 13:11:47
【问题描述】:

我目前能够通过 .bat 文件通过我的 python 脚本运行文件。这个批处理文件的内容很简单:

C:\Python26\python.exe mypythonfile.py %1
pause

我可以将各种文件拖放到 .bat 文件中,python 脚本将执行,使用拖放的文件作为参数...使用 sys.argv

这对 Windows 来说很好。但我现在想做的是在 Linux 中做同样的事情。

任何帮助将不胜感激。

【问题讨论】:

  • 我在 GNOME 桌面上检查了 nautilus,它目前不支持将作为参数丢弃的文件传递给脚本,即使封装在桌面文件中也是如此。
  • 答案将取决于您使用的桌面环境。

标签: python linux shell batch-file drag-and-drop


【解决方案1】:

bourne compatible shell(如bashdashzsh 和您在 linux 上找到的大多数其他 shell)上的脚本等效为:

#!/bin/sh
python /path/to/my/pythonfile.py $1
read

实际上这并不是真正需要的,因为对于拖放操作,您将在桌面上创建一个应用程序“快捷方式”,其中只包含 python /path/to/my/pythonfile.py $1 作为应用程序字符串。并完成它。

真正干净的解决方案甚至会将 shebang #!/usr/bin/python 添加到 .py 文件的顶部并使其可执行 - 这样您就可以直接运行它

/path/to/my/pythonfile.py $1

将脚本与您的 GUI(图标,您可以在其中放置内容)集成,取决于您使用的实际桌面环境。

xfce4

创建一个新的启动器(例如在面板上右键单击,“添加新元素”,选择Starter;然后右键单击新创建的Starter-Icon,单击“添加新对象”,为其命名并在 cmdline-field 添加

/full/path/to/my/script.sh %U

%U 将替换为您在图标上放置的任何内容。

【讨论】:

  • 嗯...我一定是错过了什么。我已经尝试了两种方法。使用 #!/bin/sh Python mypythonfile.py $1 创建一个 .sh 文件
  • ... 并尝试将 #!/usr/bin/env python 添加到我的 python 文件的顶部...似乎都不允许我拖放
  • @iGwok 首先确保脚本正常工作:启动终端并以./myscript.sh /path/to/dropped/file 手动运行它(假设您将脚本命名为myscript.sh 并且您拥有指向您要“删除”的文件)
  • 好的,所以我打开终端并拖动 .sh 文件,然后是拖放(参数)文件,按 Enter 并得到错误:/bin/sh^M: bad interpreter: No such file 或目录
  • 您似乎使用记事本(或 w32 上的其他东西)创建了脚本,因此它没有正确的行尾。使用使用 LF 作为换行符的文本编辑器创建您的脚本(在 Linux 上几乎可以,但有些是智能的,并且会保留当前的换行符)
【解决方案2】:

如果您使用以下内容启动您的 python 文件,则不需要单独的脚本:

#!/usr/bin/python

然后你可以简单地在 python 脚本本身上拖放东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 2012-01-27
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多