pygtk OSError: [Errno 2] Нет такого файла или каталога. subprocess.Popen команда PIPE - PullRequest
0 голосов
/ 23 сентября 2011

Я новичок в python и пытаюсь создать панель поиска, которая ищет только 2 каталога, используя две команды поиска, и выводит результаты в упорядоченный список [].

def search_entry(self, widget,):
            s1 = subprocess.Popen(['find /home/bludiescript/tv-shows', '-type f'], shell=False, stdout=subprocess.PIPE)
            s2 = subprocess.Popen(['find /media/FreeAgent\ GoFlex\ Drive/tobins-media', '-type f'],  stdin=s1.stdout, shell=False, stdout=subprocess.PIPE)
            s1.stdout.close()
            self.contents = "\n".join(self.list)
            s2.communicate(self.contents)

Моя строка поиска:

self.search = gtk.Entry()
            self.search.connect("activate", self.search_entry,)
            self.box1.pack_start(self.search, True, True, 0)
            self.search.show()

errormsg:

File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Разделите все аргументы в списке аргументов:

s1 = subprocess.Popen(['find','/home/bludiescript/tv-shows', '-type','f'], shell=False, stdout=subprocess.PIPE)
s2 = subprocess.Popen(['find','/media/FreeAgent\ GoFlex\ Drive/tobins-media', '-type', 'f'],  stdin=s1.stdout, shell=False, stdout=subprocess.PIPE)

ВЫХОД на MINE

>>> import subprocess
>>> s1 = subprocess.Popen(['find /home/bludiescript/tv-shows', '-type f'], shell=False, stdout=subprocess.PIPE)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 672, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1201, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
>>> s1 = subprocess.Popen(['find','/home/bludiescript/tv-shows', '-type','f'], shell=False, stdout=subprocess.PIPE)
>>> find: `/home/bludiescript/tv-shows': No such file or directory

Первый - ваш оригинальный код, и он вызывает исключение Python. Второй работает правильно, но "find" жалуется, потому что у меня нет каталога "bludiescript / tv-show" в моей системе.

0 голосов
/ 23 сентября 2011

Вы имели в виду найти в строке 2?похоже на ошибку при поиске файла "отлично"

...