Регион: IOError: [Errno 22] неверный режим ('w') или имя файла
Я не уверен, почему, но почему-то, когда у меня есть "область" в имени файла выходного файла, он дает мне эту ошибку:
IOError: [Errno 22] неверный режим ('w') или имя файла: 'path\regionlog.txt'
Он делает это для "region.txt" , "logregion.txt" и т.д.
class writeTo:
def __init__(self, stdout, name):
self.stdout = stdout
self.log = file(name, 'w') #here is where it says the error occurs
output = os.path.abspath('path\regionlog.txt')
writer = writeTo(sys.stdout, output) #and here too
Почему это? Я действительно хотел бы назвать мой файл "regionlog.txt", но он продолжает придумывать эту ошибку. Есть ли способ обойти это?
Ответы
Ответ 1
Используйте косую черту:
'path/regionlog.txt'
Или необработанные строки:
r'path\regionlog.txt'
Или хотя бы избежать обратной косой черты:
'path\\regionlog.txt'
\r
возврат каретки.
Другой вариант: используйте os.path.join
и вам не придется беспокоиться о косых os.path.join
:
output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
Ответ 2
В стандартном языке C \t
, \n
, \r
являются escape-символами. \t
является поперечным для следующей позиции ТАВ. \n
- это символ новой строки, а \r
- возврат каретки. Вы должны использовать \\r
или /r
, и вы решите проблему!
Ответ 3
Дополнительно, Python также дает это сообщение при попытке открыть файл > 50 МБ с общего диска SharePoint.
https://support.microsoft.com/en-us/help/2668751/you-cannot-download-more-than-50-mb-or-upload-large-files-when-the-upl
Ответ 4
Другим простым решением является изменение экземпляров "\ r" в пути имени файла к "\ R"