【问题标题】:OS Error file path and name being changed without user interference在没有用户干预的情况下更改操作系统错误文件路径和名称
【发布时间】:2020-05-15 15:54:46
【问题描述】:

我正在尝试使用库中的内置函数以以下方式读取 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 file io path midi


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 2010-10-26
      • 2015-01-15
      • 1970-01-01
      • 2011-10-26
      • 2011-05-19
      • 1970-01-01
      相关资源
      最近更新 更多