This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2010年06月04日 09:05 by jmfauth, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| unnamed | jmfauth, 2010年06月04日 17:45 | |||
| Messages (7) | |||
|---|---|---|---|
| msg107017 - (view) | Author: jmf (jmfauth) | Date: 2010年06月04日 09:05 | |
I was confused about the newline argument/attribute
in the misc. classes of the io module until I realize
there is a spelling issue between the docs and the
real implementation. (Py 2.6.5, Py2.7b2). Py 3.x not
tested.
>>> sys.version
2.7b2 (r27b2:81019, May 9 2010, 11:33:14) [MSC v.1500 32 bit (Intel)]
>>> sio = io.StringIO(u'abc')
>>> sio.encoding, type(sio.encoding)
(None, <type 'NoneType'>)
>>> sio.errors, type(sio.errors)
(None, <type 'NoneType'>)
>>> sio.newline, type(sio.newline)
Traceback (most recent call last):
File "<psi last command>", line 1, in <module>
AttributeError: '_io.StringIO' object has no attribute 'newline'
>>> sio.newlines, type(sio.newlines)
(None, <type 'NoneType'>)
>>>
>>> tio = io.TextIOWrapper(io.BytesIO())
>>> tio.buffer, type(tio.buffer)
(<_io.BytesIO object at 0x02E6E600>, <type '_io.BytesIO'>)
>>> tio.encoding, type(tio.encoding)
('cp1252', <type 'str'>)
>>> tio.errors, type(tio.errors)
('strict', <type 'str'>)
>>> tio.line_buffering, type(tio.line_buffering)
(False, <type 'bool'>)
>>> tio.newline, type(tio.newline)
Traceback (most recent call last):
File "<psi last command>", line 1, in <module>
AttributeError: '_io.TextIOWrapper' object has no attribute 'newline'
>>> tio.newlines, type(tio.newlines)
(None, <type 'NoneType'>)
>>> sys.version
2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)]
>>> import io
>>> tio = io.TextIOWrapper(io.BytesIO())
>>> tio.encoding, type(tio.encoding)
('cp1252', <type 'str'>)
>>> tio.line_buffering, type(tio.line_buffering)
(False, <type 'bool'>)
>>> tio.errors, type(tio.errors)
(u'strict', <type 'unicode'>)
>>> tio.newline, type(tio.newline)
Traceback (most recent call last):
File "<psi last command>", line 1, in <module>
AttributeError: 'TextIOWrapper' object has no attribute 'newline'
>>> tio.newlines, type(tio.newlines)
(None, <type 'NoneType'>)
>>> [e for e in dir(tio) if 'new' in e]
['__new__', 'newlines']
>>>
|
|||
| msg107026 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年06月04日 11:26 | |
Thanks for the report. Could you check the docs for 3.1 and 3.x trunk (py3k) too? |
|||
| msg107028 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年06月04日 11:49 | |
This is as documented: http://docs.python.org/dev/3.0/library/io.html#io.TextIOBase.newlines The keyword argument is named 'newline', the attribute is named 'newlines'. The attribute does not record what was passed to the newline argument, rather it records what newlines have been actually encountered. |
|||
| msg107051 - (view) | Author: jmf (jmfauth) | Date: 2010年06月04日 13:44 | |
2010年6月4日 R. David Murray <report@bugs.python.org> > > R. David Murray <rdmurray@bitdance.com> added the comment: > > This is as documented: > > http://docs.python.org/dev/3.0/library/io.html#io.TextIOBase.newlines > > The keyword argument is named 'newline', the attribute is named 'newlines'. > The attribute does not record what was passed to the newline argument, > rather it records what newlines have been actually encountered. > Ok, I see. I read, reread the doc prior posting, and, in my mind, it is not obvious to understand this subtle difference from the doc. Sorry for the noise. Regards. |
|||
| msg107054 - (view) | Author: Éric Araujo (eric.araujo) * (Python committer) | Date: 2010年06月04日 13:49 | |
Could you think of a way to improve the docs on that point? |
|||
| msg107083 - (view) | Author: jmf (jmfauth) | Date: 2010年06月04日 17:45 | |
2010年6月4日 Éric Araujo <report@bugs.python.org> > > Éric Araujo <merwok@netwok.org> added the comment: > > Could you think of a way to improve the docs on that point? > > ---------- > > Quick and dirty answer. I have ~10 years experience with Python and it seems to me the io module is technically excellent. However, I have found it is not so obvious to understand the usage of all these arguments, errors, encoding, line_buffering, ... in the class constructors and methods like io.open(). The doc describes what these arguments are, their states, but not too much how to use them. As an exemple, I read some time ago on the c.l.p mailing list, somebody complaining about the "encoding" argument of the class TextIOWrapper. He defined an "encoding='utf-8'" in the ctor and did not understand why his "text" was not automagically encoded. Answer: the encoding arg is only a kind of information and does not do anything. BTW, it was only when I read that post, I understand a little bit more. Regards. |
|||
| msg107085 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年06月04日 18:33 | |
This is off topic for this issue, but what you just reported makes no sense to me. TextIOWrapper calls the encoder corresponding to the specified encoding in its write method. That said, it is true that the IO docs are currently a class reference and not a user reference, and this should be fixed. There may even already be an open issue for this. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:01 | admin | set | github: 53141 |
| 2015年02月24日 23:32:58 | martin.panter | set | nosy:
+ martin.panter |
| 2010年06月04日 18:33:36 | r.david.murray | set | messages: + msg107085 |
| 2010年06月04日 17:45:52 | jmfauth | set | files:
+ unnamed messages: + msg107083 |
| 2010年06月04日 13:49:09 | eric.araujo | set | messages: + msg107054 |
| 2010年06月04日 13:48:44 | eric.araujo | set | files: - unnamed |
| 2010年06月04日 13:44:42 | jmfauth | set | files:
+ unnamed messages: + msg107051 |
| 2010年06月04日 11:49:40 | r.david.murray | set | status: open -> closed type: behavior nosy: + r.david.murray messages: + msg107028 resolution: not a bug stage: needs patch -> resolved |
| 2010年06月04日 11:26:46 | eric.araujo | set | assignee: docs@python components: + Documentation, - IO title: newline arg/attribute in the module io -> newline vs. newlines in io module nosy: + docs@python, eric.araujo messages: + msg107026 stage: needs patch |
| 2010年06月04日 09:05:56 | jmfauth | create | |