Как я могу переместить файл в корзину / корзину на разных платформах, используя PyQt4? - PullRequest
27 голосов
/ 02 сентября 2010

Я хотел бы добавить следующую функцию в мое кроссплатформенное приложение PyQt4: когда пользователь выбирает какой-то файл и выбирает действие «удалить» над ним, этот файл будет перемещен в папку корзины вместо того, чтобы быть удаленным навсегда. Я думаю, что могу найти специфичное для Windows решение с использованием Win32 API или чего-то подобного, но я хотел бы знать, может ли аналогичная операция выполняться в Ubuntu / Linux и MaxOSX также с помощью методов PyQt4.

Ответы [ 3 ]

55 голосов
/ 23 января 2011

Хорошо, что вы используете Python, я недавно создал библиотеку, чтобы сделать это:

http://www.hardcoded.net/articles/send-files-to-trash-on-all-platforms.htm

В PyPI: Send2Trash

Установка

Использование conda:

conda install Send2Trash

Использование pip:

pip install Send2Trash

Использование

Удалить файл или папку

from send2trash import send2trash
send2trash("directory")
2 голосов
/ 02 сентября 2010

Полагаю, в Qt действительно нет кроссплатформенного решения, и реализовать концепцию мусора в Linux не так уж и просто, поскольку она немного отличается в зависимости от того, какой файловый менеджер используется.

Вот сайт, где обсуждается концепция мусора в Наутилус и еще один для KDE .

В Windows вы можете использовать Win32 API, как вы сказали. Python-решение доступно здесь .

Mac OS X помещает мусорные файлы в ~ / .Trash, аналогично другим * операционным системам NIX, но я не смог быстро найти в Google какую-либо документацию для этого. Кажется, что информационный файл мусорной корзины OS X является неким двоичным форматом, а не простым текстом, как в Linux.

В Symbian отсутствует концепция рабочего стола и, следовательно, отсутствует концепция мусорной корзины. Это может быть похоже на другие мобильные платформы.

РЕДАКТИРОВАТЬ: Суперпользователь обсуждает некоторые факты, раскрывая, что .DS_Store действительно хранит информацию о загруженных файлах, но не уточняет формат.

1 голос
/ 23 января 2011

Лучшее решение для OSX 1002 * Я знаю, что использует Applescript. Я, однако, не изобрел это, поэтому я просто сошлюсь на это здесь.

Было бы неплохо иметь модуль, который упаковывал бы решения Win32 / KDE / OSX в одно, я чувствую, и импортировал правильный по требованию. Так вы решили свою проблему в конце концов?

...