ftp.storlines error
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Mon Feb 1 17:36:36 EST 2010
En Sun, 31 Jan 2010 19:07:44 -0300, Mik0b0 <newssw at gmail.com> escribió:
> Good day/night/etc.
> I am rather a newb in Python (learning Python 3). I am trying to
> create a small script for FTP file uploads on my home network. The
> script looks like this:
>
> from ftplib import FTP
> ftp=FTP('10.0.0.1')
> ftp.login('mike','*****')
> directory='/var/www/blabla/'
> ftp.cwd(directory)
> ftp.retrlines('LIST')
> print('<- - - - - - - - - >')
> file_to_change='test'
> file=1
> file=open(file_to_change,'w')
> text='test'
> file.write(text)
> ftp.storlines('STOR ' + file_to_change,file)
> ftp.retrlines('LIST')
> file.close()
>
> The output is like this:
> Traceback (most recent call last):
> File "ftp.py", line 13, in <module>
> ftp.storlines('STOR ' + file_to_change,i)
> File "/usr/lib/python3.1/ftplib.py", line 474, in storlines
> buf = fp.readline()
> IOError: not readable
For the ftp client to be able to read and upload the file, it must have
been opened for reading. But you opened it with mode 'w' a few lines above.
A quick and dirty way would be to close the file right after
file.write(...) and re-open it with mode 'r':
...
file.write(text)
file.close()
file = open(file_to_change,'r')
ftp.storlines(...)
But I'd separate file-creation from file-uploading. When it's time to
upload the file, assume it already exists and has the desired contents
(because it has already been created earlier by the same script, or
perhaps by some other process), so you just have to open it with mode 'r'.
--
Gabriel Genellina
More information about the Python-list
mailing list