Atualmente, estou criando um aplicativo em python que usa a API de dados do YouTube e inclui o seguinte bloco de código:
import os
from subprocess import run
os.chdir(os.path.dirname(__file__))
command = 'python3.10 uploadYoutube.py --file="blank.mp4" --title="Blank" --description="THIS IS YOUR BLANK VIDEO" --keywords="blank" --category="20" --privacyStatus="private"'
terminal_output = run(command, capture_output=True).stdout
print(terminal_output)
Isso produz o erro:
terminal_output = run(command, capture_output=True).stdout
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 503, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1456, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Alguém sabe como posso corrigir esse erro?
como Adon Bilivit afirmou, isso se deve ao primeiro argumento que você passa para o comando
subprocess.run
.Conforme declarado na documentação do subprocesso , quando você fornece uma string, há uma interpretação dependente da plataforma. No POSIX, fornecer uma string
Solução
A primeira solução é passar uma sequência para o primeiro
subprocess.run
argumentoVocê também pode, como a documentação sugere, definir
shell
comoTrue
.Dado o seguinte:
...você tem 2 opções.
Qualquer:
...ou...