Там с subprocess неявных проблем вагон с тележкой. Чего стоит хотя бы это:
p = subpocess.Popen(['ls', '-la'], shell=False)
это отработает. А это - нет.
p = subpocess.Popen(['ls -la'], shell=False)
Бум разбираться, остальное в личке. Для интереса:
Андрей Светлов: Интересная особенность использования subprocess