Учитывая точные пути вы specificed, по крайней мере, некоторые из ваших примеров следовал бы работал (если c:\Lets_Create_Malware
путь не существует, что бы добавить к путанице, вызывая все тестовые случаи на провал).
Обратные косые не являются проблемой здесь приведены ваши примеры, потому что символы модифицируется не специальные:
f=open('c:\Lets_Create_Malware\output.txt', 'w')
работает, потому что \ L и \ о не имеют особое значение и поэтому используются буквально (и флаги «w» и «a» создадут файл, если он еще не присутствует).
Однако другой путь:
f=open('c:\Lets_Create_Malware\badname.txt', 'w')
потерпит неудачу:
IOError: [Errno 22] invalid mode ('w') or filename: 'c:\\Lets_Create_Malware\x08adname.txt'
потому что \b
часть этого файла переводится как колокол символ (Ctrl-B или \ x08).
Есть два способа избежать этой проблемы: либо предшествуют строку с исходным модификатором строки r
(например, r'foo\bar'
) или убедиться, что каждый обратный слэш экранирован (\\
). Для этой цели предпочтительно использовать os.path.join()
от модуля os.path
.
Возможный дубликат [Open in Python не создает файл, если он не существует] (http://stackoverflow.com/questions/2967194/open-in-python-does-not-create-a-file -if-it-doesnt-exist) – paisanco
http://stackoverflow.com/questions/16333569/mixed-slashes-with-os-path-join-on-windows – dmitryro