Невозможно получить код командной строки для запуска через PythonPython

Программы на Python
Ответить
Anonymous
 Невозможно получить код командной строки для запуска через Python

Сообщение Anonymous »

Я запускаю Python 3.13.5 через PowerShell в Windows 10. Я могу успешно выполнить следующую команду и теперь хочу запустить ее с помощью скрипта Python

Код: Выделить всё

& 'D:\realesrgan\realesrgan-ncnn-vulkan.exe' -i 'D:\test.png' -o 'D:\output.png'. Как вы это делаете?
Ниже приведена очень длинная цепочка ошибок, с которыми я столкнулся, пытаясь это сделать. Я публикую это для тех, кто ищет в Интернете, так как чувствую, что я не единственный, кто столкнулся с этим.
Я пробовал:
import subprocess
args = ["& 'D:\realesrgan\realesrgan-ncnn-vulkan.exe' -i 'D:\test.png' -o 'D:\output.png'"]
result = subprocess.run(args)
И получил ошибку FileNotFoundError: [WinError 2] Система не может найти указанный файл, потому что мне нужно было вызвать его с помощью оболочки = True. Итак, я попробовал:

Код: Выделить всё

import subprocess
args = ["& 'D:\realesrgan\realesrgan-ncnn-vulkan.exe' -i 'D:\test.png' -o 'D:\output.png'"]
result = subprocess.run(args, shell = True)
И получил ошибку. Синтаксис имени файла, имени каталога или метки тома неверен. потому что мне нужно было использовать двойные косые черты \\ и разбить его на список по пробелам. Итак, я попробовал:

Код: Выделить всё

import subprocess
args = ["&", "'D:\\realesrgan\\realesrgan-ncnn-vulkan.exe'", "-i", "'D:\\test.png'", "-o", "'D:\\output.png'"]
result = subprocess.run(args, shell = True)
И возникла ошибка, которая в этот раз была неожиданной. потому что подпроцесс запускается в командной строке, а не в PowerShell. Итак, я узнал, что мне нужно удалить &, а также заменить одинарные кавычки ' на двойные' , поэтому я попробовал:

Код: Выделить всё

import subprocess
args = ['"D:\\realesrgan\\realesrgan-ncnn-vulkan.exe"', '-i', '"D:\\test.png"', '-o', '"D:\\output.png"']
result = subprocess.run(args, shell = True)
Появилась ошибка. Неверный синтаксис имени файла, имени каталога или метки тома.. Какую следующую ошибку мне не хватает? На данный момент я знаю, что команда "D:\\realesrgan\\realesrgan-ncnn-vulkan.exe" -i "D:\\test.png" -o "D:\\output.png" работает в командной строке. Однажды мне удалось зарегистрировать .exe, но он удалил параметры, которые я передавал, и я не могу воссоздать код, благодаря которому это произошло. Может быть что-то не так с использованием subprocess.call() вместо subprocess.run()?

Подробнее здесь: https://stackoverflow.com/questions/798 ... via-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»