python - Asyncio create_subprocess_exec FileNotFoundError: [Errno 2] 没有这样的文件或目录:
问题描述
我正在尝试创建一个异步管道,该管道可用于与我创建的子流程交互。我在尝试创建进程时遇到文件未找到错误的问题。正如您在下面的代码中看到的那样,我能够以Popen
同步方式使用常规创建子流程。谁能帮我克服这个错误?
代码:
# I've created the command and args string/dictionary above. They are all valid.
# I can run the command from the command line and it works
import pprint
pp = pprint.PrettyPrinter().pprint
pp(popen_params)
print(" ".join(cmd))
sp.Popen(cmd, **popen_params)
print("Made it past initially creating the pipe")
self.async_proc = self.loop.run_until_complete(asyncio.create_subprocess_exec(" ".join(cmd), **popen_params))
输出:
{'bufsize': 0, 'stderr': -1, 'stdin': -3, 'stdout': -1}
/usr/local/bin/ffmpeg -i /Users/OWNER/Google Drive/yolo.mp4 -loglevel error -f image2pipe -vf scale=1280:720 -sws_flags bicubic -pix_fmt rgb24 -vcodec rawvideo -
Made it past initially creating the pipe
Traceback (most recent call last):
File "movie_trial.py", line 97, in <module>
clip = VideoFileClip("/Users/OWNER/Google Drive/yolo.mp4")
File "/Users/OWNER/Documents/Projects/moivepy_vendoring/moviepy/video/io/VideoFileClip.py", line 94, in __init__
loop=self.loop)
File "/Users/OWNER/Documents/Projects/moivepy_vendoring/moviepy/video/io/ffmpeg_reader.py", line 72, in __init__
self.async_initialize()
File "/Users/OWNER/Documents/Projects/moivepy_vendoring/moviepy/video/io/ffmpeg_reader.py", line 119, in async_initialize
self.async_proc = self.loop.run_until_complete(asyncio.create_subprocess_exec(" ".join(cmd), **popen_params))
File "/anaconda3/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "/anaconda3/lib/python3.6/asyncio/subprocess.py", line 225, in create_subprocess_exec
stderr=stderr, **kwds)
File "/anaconda3/lib/python3.6/asyncio/base_events.py", line 1211, in subprocess_exec
bufsize, **kwargs)
File "/anaconda3/lib/python3.6/asyncio/unix_events.py", line 200, in _make_subprocess_transport
**kwargs)
File "/anaconda3/lib/python3.6/asyncio/base_subprocess.py", line 39, in __init__
stderr=stderr, bufsize=bufsize, **kwargs)
File "/anaconda3/lib/python3.6/asyncio/unix_events.py", line 706, in _start
universal_newlines=False, bufsize=bufsize, **kwargs)
File "/anaconda3/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/anaconda3/lib/python3.6/subprocess.py", line 1364, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/ffmpeg -i /Users/OWNER/Google Drive/yolo.mp4 -loglevel error -f image2pipe -vf scale=1280:720 -sws_flags bicubic -pix_fmt rgb24 -vcodec rawvideo -': '/usr/local/bin/ffmpeg -i /Users/OWNER/Google Drive/yolo.mp4 -loglevel error -f image2pipe -vf scale=1280:720 -sws_flags bicubic -pix_fmt rgb24 -vcodec rawvideo -'
解决方案
您将以下命令作为单个命令调用
/usr/local/bin/ffmpeg -i /Users/OWNER/Google Drive/yolo.mp4 -loglevel error -f image2pipe -vf scale=1280:720 -sws_flags bicubic -pix_fmt rgb24 -vcodec rawvideo -': '/usr/local/bin/ffmpeg -i /Users/OWNER/Google Drive/yolo.mp4 -loglevel error -f image2pipe -vf scale=1280:720 -sws_flags bicubic -pix_fmt rgb24 -vcodec rawvideo -
仅在第一个参数中包含命令,然后将任何额外的参数作为列表传递给第二个参数。请参阅此链接:https ://docs.python.org/3/library/subprocess.html
推荐阅读
- javascript - 滚动容器旁边的区域时将容器保持在原位
- python - 使用 scipy linprog
- java - 在 Java 中有两个类用于 8 解决难题?
- python - Django 导入导出覆盖/更新非唯一 CharField
- ruby - 使用 batch_save 时 Xeroizer RateLimitExceeded
- azure - Azure 虚拟机 LinuxDiagnostic Extension OMI EnumerateInstances 失败(Linux 诊断 OMI)
- java - JEditorPane 内图像上的文本
- reactjs - 如何在使用 GraphQL 轮询时防止重新渲染
- sql-server - 在 SQL Server Management Studio 中使用时插入 = 问号
- javascript - 无法使用 innerHTML 和 innerText 更改标签内容