这有点让人误解。 open()
as mode arg接受任何字符,而你通过一个有效的字符,即:"w,r,b,+,a"
。
因此,您可以编写:open("fname", "w+ANYTHINGYOUWANT")
。 它将打开文件为open("fname", "w+")
。 和open("fname", "rANYTHINGYOUWANT")
。 将以open("fname", "w+")
打开文件。
关于 “U” 标志:
除了标准fopen()函数值模式可以是 'U' 或 '的rU'。 Python通常使用通用换行符支持构建;提供'U' 以文本文件的形式打开文件,但行可以通过以下任一方式终止: 以下任何一种:Unix行尾约定'\ n',Macintosh 约定'\ r'或Windows惯例'\ r \ n'。所有这些 外部表示被Python程序视为'\ n'。如果 Python没有通用换行符,那么支持'U'的模式是 ,与普通文本模式相同。请注意,如此打开的文件对象 也有一个称为换行符的属性,其值为None(如果还没有看到 换行符),'\ n','\ r','\ r \ n'或元组包含所有可见的新行类型的 。
正如你可以Python文档读入https://docs.python.org/2/library/functions.html#open
编辑:
d:指定一个文件作为暂时的。当最后一个文件 指针关闭时它被删除。
你可以阅读@ tmr232的链接。
的C,N,T,S,R,T,和d模式选项Microsoft扩展为 的fopen和_fdopen并且不应该被用在ANSI可移植性是 期望
进一步更新:
我建议提交现象的一个错误,因为打开文件与标志“R”只读即,然后让/ CLOS通过后删除它会添加一个像“D”这样的单个字符,即使意外地是一个严重的安全问题,我想。
但是,如果这有一些不可避免的功能,请通知我。
对于Linux上的现有文件,open('text.txt','rD')'不会为我提供任何错误,尽管该文件在关闭时不会被删除。我真的很惊讶,如果这是真的,这个行为是[没有文档](https://docs.python.org/2/library/functions.html#open)。虽然记录了'U'国旗。 – rth
刚刚在Windows上复制。这确实很奇怪。 – tmr232
刚才我犯了同样的错误。提到是[这里](https://github.com/python/cpython/blob/2.7/Objects/fileobject.c#L209)。在fileobject中,而不是io。 – tmr232