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

21 投票
3 回答
52103 浏览
提问于 2025-04-17 17:28

我不太明白为什么,但每次我在输出文件的文件名中加上“region”,就会出现这个错误:

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”,但总是出现这个错误。有没有什么办法可以解决这个问题?

3 个回答

1

另外,当尝试从SharePoint共享驱动器打开一个超过50MB的文件时,Python也会给出这个提示。

https://support.microsoft.com/en-us/help/2668751/you-cannot-download-more-than-50-mb-or-upload-large-files-when-the-upl

1

在C语言中,\t\n\r是一些特殊的字符,叫做转义字符。\t表示跳到下一个制表符的位置,也就是一个TAB键的效果。\n表示换行,也就是开始新的一行。而\r表示回车,通常是把光标移动到当前行的开头。你应该使用\\r或者/r,这样就能解决问题了!

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'))

撰写回答