[Python-Dev] csv changed from python 2.4 to 2.5

Nick Craig-Wood nick at craig-wood.com
Wed Jun 27 12:50:41 CEST 2007


Christian K <ckkart at hoc.net> wrote:
>  I could not find documentation of the following change in python2.5. What is the
>  reason for that?
> 
>  Python 2.4.4 (#2, Apr 12 2007, 21:03:11)
>  [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
>  Type "help", "copyright", "credits" or "license" for more information.
> >>> import csv
> >>> d=csv.get_dialect('excel')
> >>> d.delimiter = ','
> >>>
> 
>  ck at kiste:/media/hda6/home/ck/prog/peak-o-mat/trunk$ python2.5
>  Python 2.5.1 (r251:54863, May  2 2007, 16:56:35)
>  [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
>  Type "help", "copyright", "credits" or "license" for more information.
> >>> import csv
> >>> d=csv.get_dialect('excel')
> >>> d.delimiter = ','
>  Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
>  TypeError: readonly attribute
> >>>

Looks like this is the reason - the get_dialect call (which is
implemented in C) is now returning a read only Dialect object rather
than an instance of the original class :-

2.5
    >>> import csv
    >>> d = csv.get_dialect('excel')
    >>> d.__class__ 
    <type '_csv.Dialect'>
    >>> 

2.4
    >>> import csv
    >>> d = csv.get_dialect('excel')
    >>> d.__class__
    <class csv.excel at 0xb7d1f74c>
    >>> 


>  Python 2.5.1 (r251:54863, May  2 2007, 16:56:35)
>  [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
>  Type "help", "copyright", "credits" or "license" for more information.
> >>> import csv
> >>> d = csv.excel
> >>> d.delimiter = ','
> >>>

Don't you want to do this anyway?

  import csv
  class my_dialect(csv.excel):
      delimeter = ","

-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick


More information about the Python-Dev mailing list