Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Re: socket.makefile raises ValueError when mode = 'rt'

Reply
Thread Tools

Re: socket.makefile raises ValueError when mode = 'rt'

 
 
Dave Angel
Guest
Posts: n/a
 
      01-09-2013
On 01/09/2013 08:22 AM, Antoon Pardon wrote:
> This is using python 3.2.
>
> I am writing somekind of wrapper around the ftplib. So
> that you can work with it as if you are working with
> local files.
>
> The idea is that you start with making a connection like
>
> rmt = FTP(...)
>
> and then do something like the following
>
> rmtfl = rmt.open("rmtfilename", "rt")
> for ln in rmtfl:
> treat(ln)
>
> This is part of the code:
>
> class ftpfile:
> def __init__(self, cn, rfn, mode, bound = False):
> self.ftp = cn
> self.bound = bound
> if 'b' in mode:
> self.ftp.voidcmd('TYPE I')
> else:
> self.ftp.voidcmd('TYPE A')
> if 'r' in mode:
> self.cnct = self.ftp.transfercmd("RETR %s" % rfn)
> self.fl = self.cnct.makefile(mode)
> elif 'w' in mode:
> self.cnct = self.ftp.transfercmd("STOR %s" % rfn)
> self.fl = self.cnct.makefile(mode, newline = '\r\n')
> else:
> raise ValueError("%s: invalide mode" % mode)
>
> The problem is with makefile. If mode contains a "t" I get
> the following traceback:
>
> Traceback (most recent call last):
> File "ftputil.tpy", line 14, in test_textftp
> rmtfl1 = rmt.open('ftp1.py', 'wt')
> File "/local/home/apardon/src/projecten/py3lib/ftputil.py", line 76,
> in open
> return ftpfile(ftp, fn, mode, True)
> File "/local/home/apardon/src/projecten/py3lib/ftputil.py", line 15,
> in __init__
> self.fl = self.cnct.makefile(mode, newline = '\r\n')
> File "/usr/lib/python3.2/socket.py", line 151, in makefile
> raise ValueError("invalid mode %r (only r, w, b allowed)")
> ValueError: invalid mode %r (only r, w, b allowed)
>
> But the documentation states:
> socket.makefile(mode='r', buffering=None, *, encoding=None, errors=None,
> newline=None)
> Return a file object associated with the socket. The exact returned
> type depends on the arguments given to makefile(). These arguments are
> interpreted the same way as by the built-in open() function.
>
> And since 't' is allowed in the mode of the built-in open() function I
> would consider this a bug.
> Unless I am missing something?


I believe that 't' was a new addition to mode, for Python 3.x So
perhaps the socket library hasn't kept consistent with it.

I don't really know the socket library. Does it even support text
mode? Does that make sense? Remember that text mode means a different
thing in 3.x than it did in 2.x



--

DaveA

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: socket.makefile raises ValueError when mode = 'rt' Terry Reedy Python 0 01-09-2013 11:36 PM
Re: socket.makefile raises ValueError when mode = 'rt' Antoon Pardon Python 0 01-09-2013 02:14 PM
socket.makefile raises ValueError when mode = 'rt' Antoon Pardon Python 0 01-09-2013 01:22 PM
Re: httplib raises ValueError reading chunked content Philip Semanchuk Python 0 03-09-2006 02:00 AM
httplib raises ValueError reading chunked content philip20060308@gmail.com Python 0 03-08-2006 11:21 PM



Advertisments