Domanda

L'esecuzione del seguente codice:

import os
import datetime
import ftplib

currdate = datetime.datetime.now()
formatdate = currdate.strftime("%m-%d-%Y %H%M")

def log():

    fqn = os.uname()[1]
    ext_ip = urllib2.urlopen('http://whatismyip.org').read()
    log = open ('/Users/admin/Documents/locatelog.txt','w')
    log.write(str("Asset: %s " % fqn))
    log.write(str("Checking in from IP#: %s" % ext_ip))
    smush = str(fqn +' @ ' + formatdate)
    os.rename('/Users/admin/Documents/locatelog.txt','/Users/admin/Documents/%s.txt' %  smush )

    s = ftplib.FTP('10.7.1.71','username','password')
    f = open('/Users/admin/Documents/%s.txt' % smush,'r')
    s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)

genera il seguente errore:

ftplib.error_perm: 550 /Users/admin/Documents/678538.local @ 02-24-2010 1301.txt: No such file or directory

Ho un sensazione che qualcosa non va in questa linea:

s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)

678.538 è il padrone di casa che sto testando su ... utilizzando Mac OS X 10.5 e Python 2.5.1

È stato utile?

Soluzione 3

Modifica

Questa versione funziona: Il problema era che stavo scrivendo a tampone, e non a file

.
import os
import urllib2
import datetime
import ftplib

currdate = datetime.datetime.now()
formatdate = currdate.strftime("%m-%d-%Y-%H%M")

def log():

    fqn = os.uname()[1]
    ext_ip = urllib2.urlopen('http://whatismyip.org').read()
    smush = str(fqn + formatdate)
    s = ftplib.FTP('10.7.1.71','username','password')
    f = open('/Users/admin/Documents/%s.txt' % smush,'w')
    f.write(str("Asset: %s " % fqn))
    f.write('\n')
    f.write(str("Checking in from IP#: %s" % ext_ip))
    f.write('\n')
    f.write(str("On: %s" % formatdate))
    f.close
    f = open('/Users/admin/Documents/%s.txt' % smush,'rb')
    s.storbinary('STOR %s.txt' % smush , f)
    s.close
    f.close

Altri suggerimenti

Non dovrebbe bef = open('/Users/admin/Documents/%s.txt' % smush,'r')? notare la / davanti Users

Se non mettere il primo /, lo script penserà il percorso del file è relativo alla directory corrente (in cui lo script viene eseguito da)

Modifica :

Io non sono troppo familiarità con Python (vorrei), ma shouldnt si tratti:

s.storbinary('STOR /Users/admin/Documents/%s.txt' % smush,f)?

Nel tuo esempio, Python considererà il suo stringa come letterale e si vuole interpolare il valore di Smush con% s

Modifica 2 :

Fa la /Users/admin/Documents/ directory esiste sul server? In caso contrario, penso che dovrete crearle prima di copiare qualsiasi cosa. (Dal momento che il messaggio di errore è di alcuni file / cartelle mancante).

È possibile creare loro stessi per primi. Eseguire lo script. Se il file viene copiato correttamente, quindi è possibile aggiungere la creazione delle directory all'interno del tuo script.

rimuovere tutti gli spazi dal nome del file .EG in smush = str(fqn +' @ ' + formatdate), si sta mettendo uno spazio davanti e dopo "@". si percorso è simile al

/Users/admin/Documents/something @ something

e quando si passa a ftplib, può avere problemi. un altro modo è quello di cercare citazioni mettendo, ad esempio

s.storbinary("STOR '/Users/admin/Documents/%s.txt'" % smush,f)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top