Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   socket.makefile raises ValueError when mode = 'rt' (http://www.velocityreviews.com/forums/t956338-socket-makefile-raises-valueerror-when-mode-rt.html)

Antoon Pardon 01-09-2013 01:22 PM

socket.makefile raises ValueError when mode = 'rt'
 
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?


All times are GMT. The time now is 11:21 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.