Python pickle FileNotFound для конкретного имени - PullRequest
1 голос
/ 30 октября 2019

У меня странная проблема при попытке сохранить рассол с помощью Python 3.7.4 в Windows 10. Когда я использую определенное имя, начинающееся с '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'))

Я знаю, что могу сменить имя и заставить его работать Но для любопытства кто-нибудь знает, почему это происходит?

1 Ответ

1 голос
/ 30 октября 2019

Поскольку в 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/

...