使用Watchdog与PyAudio时,判断目录路径的if语句遇Unicode转义错误求助
问题解决思路
错误根源
你代码里的路径字符串包含\x,Python会将\x识别为Unicode转义序列的起始符号,要求后面必须跟两位十六进制数,但你这里\x.csv里的\x后面只有c,不符合转义规则,直接触发语法错误。
修复方案
三种简单的解决方式任选其一即可:
使用原始字符串:在路径字符串前加
r,让Python不解析字符串内的转义字符:def on_modified(self, event): x = event.src_path print(x) if x == r'c:/WATCHDOGTEST\x.csv': pyaudio_01.PLAY_SOUND() if x == r'c:/WATCHDOGTEST2\x.csv': pyaudio_02.PLAY_SOUND()用双反斜杠替代单反斜杠:把路径里的单个
\改成\\,Python会将其解析为单个反斜杠:def on_modified(self, event): x = event.src_path print(x) if x == 'c:/WATCHDOGTEST\\x.csv': pyaudio_01.PLAY_SOUND() if x == 'c:/WATCHDOGTEST2\\x.csv': pyaudio_02.PLAY_SOUND()统一使用正斜杠:Windows系统同样支持正斜杠作为路径分隔符,直接把
\换成/:def on_modified(self, event): x = event.src_path print(x) if x == 'c:/WATCHDOGTEST/x.csv': pyaudio_01.PLAY_SOUND() if x == 'c:/WATCHDOGTEST2/x.csv': pyaudio_02.PLAY_SOUND()
另外注意:on_modified方法参数里的event,多了个逗号,建议修正为event,虽然这不是当前语法错误的原因,但能避免潜在问题。
内容的提问来源于stack exchange,提问作者Dan S
相关产品推荐
相关产品推荐

