Я получаю сообщение об ошибке «FileNotFoundError: [WinError 2] Система не может найти указанный файл» в подпроцессе python - PullRequest
1 голос
/ 06 мая 2020

Я получаю сообщение об ошибке FileNotFoundError: [WinError 2] The system cannot find the file specified в подпроцессе python. Я искал его при переполнении стека, но не нашел ответа, касающегося моей ситуации. По сути, я пытаюсь рассчитать продолжительность видео с помощью кода python. Я поискал его при переполнении стека и нашел кусок кода. Когда я пытался выполнить этот код, я получаю FileNotFoundError: [WinError 2] The system cannot find the file specified. Я проверяю файл и его правильный путь и правильный файл. Вот код, который я пытаюсь запустить, и я получил его от здесь .

import subprocess

def get_length(filename):
    result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
                             "format=duration", "-of",
                             "default=noprint_wrappers=1:nokey=1", filename],
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT)
    return float(result.stdout)

get_length("video.avi")

Любое предложение будет оценено. Вот полная ошибка:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-17-8d1ce3720e37> in <module>
      9     return float(result.stdout)
     10 
---> 11 get_length("video.avi")

<ipython-input-17-8d1ce3720e37> in get_length(filename)
      6                              "default=noprint_wrappers=1:nokey=1", filename],
      7         stdout=subprocess.PIPE,
----> 8         stderr=subprocess.STDOUT)
      9     return float(result.stdout)
     10 

~\Anaconda3\envs\FYP\lib\subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
    421         kwargs['stdin'] = PIPE
    422 
--> 423     with Popen(*popenargs, **kwargs) as process:
    424         try:
    425             stdout, stderr = process.communicate(input, timeout=timeout)

~\Anaconda3\envs\FYP\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
    727                                 c2pread, c2pwrite,
    728                                 errread, errwrite,
--> 729                                 restore_signals, start_new_session)
    730         except:
    731             # Cleanup if the child failed starting.

~\Anaconda3\envs\FYP\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
   1015                                          env,
   1016                                          os.fspath(cwd) if cwd is not None else None,
-> 1017                                          startupinfo)
   1018             finally:
   1019                 # Child is launched. Close the parent's copy of those pipe

FileNotFoundError: [WinError 2] The system cannot find the file specified

Я не понимаю, почему я получаю эту ошибку, хотя мой код работает отлично.

import subprocess
process = subprocess.Popen(['vlc', 'video.avi'], 
                       stdout=subprocess.PIPE,
                       universal_newlines=True)
...