subprocess.call 找不到 file/shutil.在 pycharm 中失败



我正在尝试将mp3转换为wav文件pycharm使用子流程

import subprocess
subprocess.call(['ffmpeg', '-i','test.mp3','test.wav'])

它返回找不到文件的错误,所以我将'ffmpeg'更改为我pc上的路径,它工作。

问题是我正在制作一个应用程序,其他人可能会在其他位置安装ffpmeg(因为它是用zip下载的,可以在任何地方解压缩),但我不知道如何获得它的完整路径。

我尝试使用os模块

import os
print(os.path('ffmpeg.exe'))

,但似乎无法获得exe

的路径
Traceback (most recent call last):
File "C:UsersPercyPycharmProjectsAPPtest3.py", line 8, in <module>
print(os.path('ffmpeg.exe'))
TypeError: 'module' object is not callable

我也尝试了shutil模块

import shutil
print(shutil.which('ffmpeg'))
print(shutil.which('ffmpeg.exe'))

但它返回2 None(可能是错误的,因为我100%肯定我已经安装了ffmpeg)

None
None

我想问是否有任何方法可以在pycharm中获得ffmpeg的完整路径或任何方法,我可以使ffmpeg安装在指定的路径与应用程序,当它被用户下载

如果你能让" everyone ";使用我的ffmpeg-downloader安装,然后你们所有人都可以安装FFmpeg:

pip install ffmpeg-downloader
ffdl install
那么在Python中你的包可以使用
import ffmpeg_downloader as ffdl
sp.run([ffdl.ffmpeg_path, '-i', 'input.mp4', 'output.mkv'])

或者,您可以使用static-ffmpeg(动态地)将FFmpeg安装到Lib/site-package。(参见链接的GitHub页面了解如何。)

相关内容

最新更新