Python 为特定名称泡菜 FileNotFound

Python pickle FileNotFound for specific name

我在尝试使用 Python 3.7.4 在 Windows 10 上保存 pickle 时遇到一个奇怪的问题。当我使用以 'aux' 开头的特定名称时,它会抛出 FileNotFoundError .如果我更改名称,效果很好:

import pickle

list_example = [1, 2, 3]

# normal string - breaks
pickle.dump(list_example, open('aux.pk', 'wb'))

# trying raw string - breaks
pickle.dump(list_example, open(r'aux.pk', 'wb'))

# trying formatted string - breaks
file_name = 'aux'
pickle.dump(list_example, open(f'{file_name}.pk', 'wb'))

# trying other extension - breaks
pickle.dump(list_example, open('aux.foo', 'wb'))

# changing name, it works
pickle.dump(list_example, open('tux.pk', 'wb'))
pickle.dump(list_example, open('tux.foo', 'wb'))

我知道我可以更改名称并使其有效但是,出于好奇,有人知道为什么会这样吗?

因为 windows 文件名 aux 无效。以下也被保留:

CON
PRN
AUX
NUL
COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, COM0
LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, LPT0

参考:https://kizu514.com/blog/forbidden-file-names-on-windows-10/