在python中运行shell脚本以在OS X中播放音频文件

时间:2016-02-10 18:02:48

标签: python zsh

我正在尝试在Python中运行一些zsh命令,我有一个输入变量。我不熟悉zsh所以我试着像在Applescript中那样处理它但是失败了。

wordToRead = getClipboardData()

p = subprocess.Popen(
        ['/usr/bin/zsh', '-'] + [wordToRead], 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
        stdin=subprocess.PIPE)

scpt = '''
cd $TMPDIR
curl -o wordToRead 'http://dict.youdao.com/dictvoice?audio=wordToRead'
afplay wordToRead
rm wordToRead
'''

p.communicate(scpt)

实际上我甚至不知道zsh代码到底做了什么。但是,它会播放wordToRead的音频。

如何解决?

1 个答案:

答案 0 :(得分:1)

就像我说的那样,zsh不是必需的,Unix系统上的subprocess命令的默认值是/bin/sh,它可以很好地运行脚本。

import subprocess

wordToRead = getClipboardData()

scpt = '''
cd /tmp
curl -s -o wordToRead 'http://dict.youdao.com/dictvoice?audio={}'
afplay wordToRead
rm wordToRead
'''.format(wordToRead)

p = subprocess.call(scpt, shell=True)
  

我甚至不知道zsh代码究竟做了什么

它被称为 shell 脚本,它不是“zsh代码”。

  1. 进入/tmp文件夹

    cd /tmp
    
  2. 使用您指定的字符串下载音频文件

    curl -s -o wordToRead 'http://dict.youdao.com/dictvoice?audio={}'
    
  3. 使用afplay命令打开该音频文件

    afplay wordToRead
    
  4. 删除下载的文件

    rm wordToRead