21

我不知道为什么,但由于某种原因,每当我在输出文件的文件名中有“区域”时,它都会给我这个错误:

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”,但它不断出现该错误。有办法解决吗?

4

4 回答 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'))
于 2013-02-28T17:24:53.957 回答
1

在 C 标准语言中,\t, \n,\r是转义字符。\t是下一个 TAB 位置的横向。\n是换行符,\r是回车符。您应该使用\\ror /r,您将解决问题!

于 2017-03-14T11:29:41.530 回答
1

此外,当尝试从 SharePoint 共享驱动器打开大于 50 MB 的文件时,Python 也会给出此消息。

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

于 2017-11-21T13:20:41.537 回答
-1

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

于 2018-01-10T07:20:46.580 回答