Python 对于存在的文件,子进程不返回此类文件或目录

Python 对于存在的文件,子进程不返回此类文件或目录,python,file,subprocess,tornado,Python,File,Subprocess,Tornado,我有一段代码试图使用SpeechRecognition(可在PyPi中获得)将音频文件提交到bing语音api进行转录: 将引发以下异常: File "./websocket_server.py", line 105, in send_data with speech_recognition.AudioFile(path.join(path.dirname(path.realpath(__file__)), filename)) as source: File "/srv/www/h

我有一段代码试图使用SpeechRecognition(可在PyPi中获得)将音频文件提交到bing语音api进行转录:

将引发以下异常:

File "./websocket_server.py", line 105, in send_data
    with speech_recognition.AudioFile(path.join(path.dirname(path.realpath(__file__)), filename)) as source:
  File "/srv/www/harkvisualizer/harkenv/local/lib/python2.7/site-packages/speech_recognition/__init__.py", line 195, in __enter__
    ], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
该文件已存在

(harkenv) root@ip-172-31-28-12:/srv/www/harkvisualizer# ls | grep flac
part0.flac
我打印了传递给AudioFile()函数的路径,这是正确的。我还播放了音频文件,以确保它是我所期望的。我试着在popen调用的源代码中添加shell=True arg,因为我读到了一些与此相关的潜在问题,但没有解决。这是在虚拟环境中运行的,在websocket代码块中,该代码块将数据发送到浏览器(我正在转换文本并将其发送到网页)。我不确定这是否是个问题

系统信息:

用于venv和系统的Python版本:

(harkenv) root@ip-172-31-28-12:/srv/www/harkvisualizer# which python
/srv/www/harkvisualizer/harkenv/bin/python

(harkenv) root@ip-172-31-28-12:/srv/www/harkvisualizer# python --version
Python 2.7.6

root@ip-172-31-28-12:/srv/www/harkvisualizer# /usr/bin/python --version
Python 2.7.6

我的SpeechRecognition库版本是3.4.6。

根据完整的代码片段发布此版本的答案:

您的机箱中缺少flac编码器/解码器:

sudo apt-get install flac

这里不承认三重引号;使用四个空格缩进进行代码格式设置,或者选择相关部分并使用
{}
按钮。也就是说,您在哪里生成末尾带有
.flac
(与
.wav
相反)的输入文件名?当我阅读代码时,它将试图阅读
part0.wav
,您没有演示它的存在。打印path.join的实际值(path.dirname(path.realpath(\uuuu file\uuuu)),filename)会很有帮助。顺便说一句,
shell=True
通常会产生比解决问题更多的bug,其中一些bug比较模糊(并且仅在处理异常的文件名或参数值时才会出现);在不了解行为变化的情况下将其添加为冰雹玛丽是不明智的。嗨,查尔斯。我确实在那行之前打印了路径。它是/srv/www/harkvisualizer/part0.flac。我一直在交替尝试使用.flac文件和.wav文件,但两者都有问题。抱歉,我对该文件的搜索是从我使用.flac进行测试时开始的。我将编辑帖子。web服务器作为哪个用户运行?如果您使用
sudo-u-i
成为该用户,那么您能
cd
访问相关目录并访问相关文件吗?
sudo apt-get install flac