У меня есть сценарий Python, который принимает аргументы из командной строки, используя «Argparser». Здесь я указываю местоположение определенного файла. Затем я вызываю другой инструмент командной строки, установленный в моем поле, и передаю это местоположение файла этому инструменту. Для работы инструмента требуется создать выходной каталог.Модуль подпроцесса Python: «Не удалось создать каталог»
Теперь моя проблема заключается в том, что на своем собственном инструменте нет проблем с созданием каталога вывода в указанном вами местоположении. Например: #tool -o ~/output filelocation'
заставляет инструмент читать файл из файловой области и создавать каталог с именем 'output' в моей домашней папке для хранения результатов. Но, когда я взываю то же самое с помощью модуля подпроцесс в Python, он дает мне ошибку:
subprocess.call(['tool', '-o ~/output', args.filelocation])
Это приводит к:
Could not make directory ~/output
Я бегу все это с привилегиями суперпользователя. Я не знаю, почему этот «инструмент» не может создать каталог при вызове через модуль подпроцесса. Любая помощь будет оценена по достоинству.
EDIT: Это дает мне ту же ошибку, даже если я использую абсолютный путь. Например, я использую:
subprocess.call(['tool', '-o /root/output', args.filelocation])
Результат:
Could not make directory /root/bulk
ли работа, если вы используете 'оболочки = True '? – SethMMorton
Также вы должны построить аргумент следующим образом: '['tool', '-o', '~/output', args.filelocation]'. Все, разделенное пробелом, должно быть новым элементом в списке команд. Возможно, это и есть проблема. – SethMMorton
Наличие привилегий root (обязательно) совпадает с правами root. –