OS 在没有用户干预的情况下更改文件路径和名称时出错

OS Error file path and name being changed without user interference

我正在尝试使用库中的内置函数以下列方式读取 MIDI 文件 - mido 以读取此类文件。

mid = mido.MidiFile('..\Datasets\abel.mid')

错误:

OSError                                   Traceback (most recent call last)
<ipython-input-34-5c67b78f0caf> in <module>()
----> 1 mid = mido.MidiFile('F:\AI\Music classification\Datasets\abel.mid')

~\Anaconda3\lib\site-packages\mido\midifiles\midifiles.py in __init__(self, filename, file, type, ticks_per_beat, charset, debug, clip)
    313             self._load(file)
    314         elif self.filename is not None:
--> 315             with io.open(filename, 'rb') as file:
    316                 self._load(file)
    317 

OSError: [Errno 22] Invalid argument: '..\Datasets\x07bel.mid'

如果我们观察错误的最后一行,我们会注意到文件名似乎已更改。为什么会这样?

如果我按以下方式更改代码,在文件名似乎已更改的地方添加一个额外的 \,那么文件将被完美读取:

mid = mido.MidiFile('..\Datasets\abel.mid')

为什么当我添加一个额外的 \ 时,代码有效?

Python 使用反斜杠进行字符串转义 - 这让您可以为字符序列定义不同的值。正如 \n 是换行符一样,\a 是十六进制字节 07。您可以转义反斜杠本身,因此 \ 只是一个反斜杠。您可以使用 "raw" 字符串(例如,`r"\a")一起禁用转义。