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


person FaerieDrgn    schedule 28.02.2013    source источник


Ответы (4)


Используйте косую черту:

'path/regionlog.txt'

Или необработанные строки:

r'path\regionlog.txt'

Или, по крайней мере, избегайте обратной косой черты:

'path\\regionlog.txt'

\r - это возврат каретки.


Другой вариант: используйте os.path.join, и вам вообще не придется беспокоиться о косых чертах:

output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
person Pavel Anossov    schedule 28.02.2013
comment
третий вариант: двойные косые черты. - person Martijn Pieters; 28.02.2013
comment
Четвертый вариант: используйте os.path.join. ОП уже импортировал os.path. - person Fred Foo; 28.02.2013

В стандартном языке C \t, \n, \r являются escape-символами. \t является поперечной к следующей позиции TAB. \n — это новая строка, а \r — возврат каретки. Вы должны использовать \\r или /r, и вы решите проблему!

person JackChen    schedule 14.03.2017
comment
В следующий раз убедитесь, что то, что вы набрали, правильно отображается на экране, так как ваш \\r отображается как \r, что совсем не поможет. - person Nathan Tuggy; 14.03.2017

Кроме того, 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

person Henk van der Laak    schedule 21.11.2017

Еще одно простое решение — изменить экземпляры «\r» в пути к имени файла на «\R».

person Roee Anuar    schedule 10.01.2018