Перетащите файл в скрипт Python - PullRequest
3 голосов
/ 07 августа 2011

Я ищу кроссплатформенный способ заставить мой скрипт Python обрабатывать путь к файлу путем реализации метода drag n drop.В данный момент я вручную иду к терминалу и использую метод sys.argv:

python myscript.py /Python/myfile.xls

Однако это медленно и "плохо".В идеале я бы использовал быстрый и интерактивный способ обработки файла моим скриптом Python.Мне в первую очередь нужно, чтобы это работало на Mac, но кроссплатформенность была бы лучше.

Ответы [ 3 ]

2 голосов
/ 07 августа 2011

Если вы хотите использовать Tkinter, взгляните на привязку Tkinter DnD здесь http://klappnase.bubble.org/TkinterDnD/index.html

При запуске привязка показывает пример со списком, который позволяет перетащить в него файл.

1 голос
/ 07 августа 2011

Вы хотите перетащить myfile.xls на ваш скрипт на python в вашем файловом навигаторе?Скажите Finder или что-то еще на Mac, Explorer на Win, Nautilus и т. Д.?В этом случае не будет простого кроссплатформенного решения, учитывая, что вам придется подключаться к разным программам в разных системах.

Для конкретного решения для Mac попробуйте AppleScript - вот образец

А для чего-то Pythonic есть http://appscript.sourceforge.net/, http://docs.python.org/library/macosa.html

В противном случае решение в ответе выше.Используйте пользовательский графический интерфейс, встроенный в Tk, или wx или QT.Вы можете посмотреть соответствующую документацию для перетаскивания, у них есть кроссплатформенные способы сделать это.

0 голосов
/ 07 августа 2011

Было бы проще всего написать небольшой графический интерфейс с Tkinter или чем-то подобным и попросить пользователя выбрать файл в графическом интерфейсе.Что-то вроде этого:

import tkFileDialog
f = tkFileDialog.askopenfilename()
# Go on from there; f is a handle to the file that the user picked

Однако я не знаю ни одного кроссплатформенного метода, чтобы заставить скрипт работать с перетаскиванием.Это, вероятно, проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...