Подтвердить что ты не робот

Регион: 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", но он продолжает придумывать эту ошибку. Есть ли способ обойти это?

4b9b3361

Ответ 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, и вы решите проблему!

Ответ 4

Другим простым решением является изменение экземпляров "\ r" в пути имени файла к "\ R"