En Sun, 31 Jan 2010 19:07:44 -0300, Mik0b0 <new...@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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to