FTP upload issue

D

davidj411

I am having difficulty uploading a text file using Python 2.5 on MAC
OSX.

SCRIPT

filename='/tmp/mac.info2.txt'
fh=open(filename,'w')
fh.write('yes, i have a mac but don't hold that against me - just
example data')
fh.close()


from ftplib import FTP
'host, username, and password are string variables that have already
been defined.
ftp = FTP(host)
ftp.login(username,password)
'so far, logged in, all is well , error is on next line.

ftp.storlines("STOR" + filename, file(filename))
ftp.quit()

What am i doing wrong? the file DOES exist, the path is correct, and
the file was closed after being written. file(filename) should open
it again for the upload?

http://www.python.org/doc/lib/ftp-objects.html says that the command
should be an appropriate "STOR" command: "STOR filename". file is an
open file object which is read...


ERROR
File "mac.inventory.py", line 44, in <module>
ftp.storlines("STOR " + filename, file(filename))
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 437, in storlines
conn = self.transfercmd(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 356, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 327, in ntransfercmd
resp = self.sendcmd(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 241, in sendcmd
return self.getresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 216, in getresp
raise error_perm, resp
ftplib.error_perm: 550 /tmp/mac.info2.txt: The system cannot find the
path specified.
 
A

afrobeard

First of all, it would be better to use:-

ftp.storlines("STOR " + remoteFileName, open(localFileName, "rb"))

rather than:-

ftp.storlines("STOR" + filename, file(filename))

Since the Python Documentation has this to say for open(): [Although ]

When opening a file, it's preferable to use open() instead of invoking
this constructor directly. file is more suited to type testing (for
example, writing "isinstance(f, file)").

Secondly Referring to another mail thread :
http://mail.python.org/pipermail/tutor/2006-February/045347.html
Quoting Kent :

fname should be just a bare name, e.g. 'mac.info2.txt'. You have to
ftp.cwd()
to the correct directory yourself. If it does not exists, create a tmp
directory. You're currently passing /tmp/mac.info2.txt to the ftp.

This should hopefully solve your problem.

P.S. I personally used to use ftputil[Really easy to use] and now I
use twisted. These libraries abstract a lot of stuff out for you.

I am having difficulty uploading a text file using Python 2.5 on MAC
OSX.

SCRIPT

filename='/tmp/mac.info2.txt'
fh=open(filename,'w')
fh.write('yes, i have a mac but don't hold that against me - just
example data')
fh.close()

from ftplib import FTP
'host, username, and password are string variables that have already
been defined.
ftp = FTP(host)
ftp.login(username,password)
'so far, logged in, all is well , error is on next line.

ftp.storlines("STOR" + filename, file(filename))
ftp.quit()

What am i doing wrong?  the file DOES exist, the path is correct, and
the file  was closed after being written. file(filename) should open
it again for the upload?

http://www.python.org/doc/lib/ftp-objects.htmlsays that the command
should be an appropriate "STOR" command: "STOR filename". file is an
open file object which is read...

ERROR
  File "mac.inventory.py", line 44, in <module>
    ftp.storlines("STOR " + filename, file(filename))
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 437, in storlines
    conn = self.transfercmd(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 356, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 327, in ntransfercmd
    resp = self.sendcmd(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 241, in sendcmd
    return self.getresp()
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/ftplib.py", line 216, in getresp
    raise error_perm, resp
ftplib.error_perm: 550 /tmp/mac.info2.txt: The system cannot find the
path specified.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top