使用PyCharm运行Python调用subprocess启动Spotify的问题咨询
现有代码存在的问题
- 逻辑判断语法错误:Python中
==右侧的"JARVIS Open Spotify" or "Hey Jarvis open spotify" or ...表达式只会返回第一个非空真值也就是"JARVIS Open Spotify",后续的条件完全不会生效,只有输入和第一个字符串完全一致时才会触发判断。 - 语法格式错误:
subprocess.Popen行的文件路径字符串缺少闭合双引号,整行也缺少函数调用的右括号,运行会直接报语法错误。 - 匹配逻辑不灵活:现在是严格相等匹配,用户输入大小写有差异(比如输入
open spotify小写)、前后带空格的情况都无法匹配。 - 冗余代码:
input()函数返回值本身就是字符串类型,不需要额外用str()做重复转换。
修复后的实现代码
import subprocess # 预先定义所有可触发启动的指令集合 ALLOWED_COMMANDS = {"jarvis open spotify", "hey jarvis open spotify", "open spotify", "launch spotify"} first_command = input("Hello sir. Would you like for me to do anything?> ") # 对用户输入做标准化处理后再匹配 if first_command.strip().lower() in ALLOWED_COMMANDS: subprocess.Popen(r"C:\Users\Administrator\Downloads\Spotify.exe")
关键修改说明
- 把所有允许触发的指令放到集合中,用
in关键词判断用户输入是否符合,所有指令规则都会生效 - 增加
strip()去除用户输入前后的多余空格,lower()统一转小写,大小写不敏感的匹配更符合实际使用习惯 - 补全了路径字符串的闭合双引号和函数调用的右括号,消除语法错误
- 去掉了冗余的字符串类型转换,代码更简洁
内容的提问来源于stack exchange,提问作者ohno
相关产品推荐
相关产品推荐

