2013-08-03 4 views
0

Использование http://pygtk.org/pygtk2tutorial/examples/filelisting.py Как я могу открыть файл во внешней программе (всегда такой же, в частности, аудио-проигрыватель без использования графического интерфейса, например, sox play), нажав на него?Открыть файл в python

def open_file(self, treeview, path, column): 
    model = treeview.get_model() 
    iter = model.get_iter(path) 
    filename = os.path.join(self.dirname, model.get_value(iter, 0)) 
    filestat = os.stat(filename) 
    if stat.S_ISDIR(filestat.st_mode): 
     new_model = self.make_list(filename) 
     treeview.set_model(new_model) 
    return 

Я предполагаю, что этот фрагмент является только о листинге файлов ... Это будет моя первая программа питона, поэтому, пожалуйста, медведь со мной, если мой вопрос тупой :)

ответ

3

Вы можете использовать subprocess.call или os.spawn или любую другую функцию, которая порождает или вызывает процесс. Передайте имя исполняемого файла в качестве аргумента и передайте имя файла в качестве аргумента CLI, если вызываемая программа (в вашем случае ваша плейер) принимает аргументы CLI.

+0

Возможно, он захочет запустить его в фоновом режиме, что означает, что он захочет создать 'subprocess.Popen' и обработать его в будущем (если только он не хочет порождать поток, чтобы ждать возврата' call') ... но чтение документов подпроцесса, с которыми вы связаны, должно быть достаточно, чтобы заставить его двигаться в правильном направлении, поэтому более чем достаточно. – abarnert

+0

'subprocess.call ([" play "," ~/Studio/Samples/DRUMS/Vintage_Drum_Samples_24bit/DR55/dr55_rim.wav "])' работает как шарм, спасибо! Теперь мне нужно только выяснить, как вызвать событие click в pyGTK, и как связать этот файл subprocess.call с ним. – yPhil

+0

http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html – Hyperboreus

Смежные вопросы