我正在开发一个小项目,我需要通过 python 控制控制台播放器。此示例命令在 Linux 终端上完美运行:
mplayer -loop 0 -playlist <(find "/mnt/music/soundtrack" -type f | egrep -i '(\.mp3|\.wav|\.flac|\.ogg|\.avi|\.flv|\.mpeg|\.mpg)'| sort)
在 Python 中我正在执行以下操作:
command = """mplayer -loop 0 -playlist <(find "/mnt/music/soundtrack" -type f | egrep -i '(\.mp3|\.wav|\.flac|\.ogg|\.avi|\.flv|\.mpeg|\.mpg)'| sort)"""
os.system(command)
问题是当我使用 Python 尝试它时,它在运行时出现错误:
sh: 1: Syntax error: "(" unexpected
我在这里真的很困惑,因为它是完全相同的字符串。为什么第二种方法不起作用?
谢谢。
最佳答案
您的默认用户 shell 可能是 bash
。 Python 的 os.system
命令在 Linux 中默认调用 sh
。
解决方法是使用 subprocess.check_call()
并传递 shell=True
作为告诉 subprocess
使用默认用户 shell 执行的参数。
import subprocess
command = """mplayer -loop 0 -playlist <(find "/mnt/music/soundtrack" -type f | egrep -i '(\.mp3|\.wav|\.flac|\.ogg|\.avi|\.flv|\.mpeg|\.mpg)'| sort)"""
subprocess.check_call(command, shell=True)
关于python - 通过 Python 运行终端命令时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584124/