区域:IOError:[Errno 22]无效模式('w')或文件名

21
我不确定为什么,但是无论何时输出文件名中有“region”一词,都会出现以下错误:
IOError: [Errno 22] invalid mode ('w') or filename: '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”,但它一直显示错误。有没有解决方法?
4个回答

32
使用正斜杠:
'path/regionlog.txt'

或原始字符串:

r'path\regionlog.txt'

或者至少转义你的反斜杠:

'path\\regionlog.txt'

\r是回车符。


另一种选择是使用os.path.join,这样您就不必担心斜杠了。
output = os.path.abspath(os.path.join('path', 'regionlog.txt'))

1
第三个选项:将斜杠加倍。 - Martijn Pieters
1
第四个选项:使用 os.path.join。OP已经导入了 os.path - Fred Foo

1
在C标准语言中,\t\n\r都是转义字符。其中,\t表示横向跳到下一个TAB位置,\n表示换行,\r表示回车。你应该使用\\r或者/r来解决问题!

下次请检查您在屏幕上输入的内容是否正确,因为您的 \\r 显示为 \r,这样并没有什么帮助。 - Nathan Tuggy

1

-2
另一个简单的解决方案是将文件名路径中的“\r”实例更改为“\R”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接