Seite 1 von 1

Variable als Filename

Verfasst: Samstag 12. Juli 2014, 10:28
von lucanello
Liebe Community.

Ich habe erneut ein Problem:
Ich habe eine Variable als Name für meine Text-Datei gewählt, welche per FTP hochgeladen werden soll. Jedoch ist der Befehl session.storbinary('STOR filename', file), welcher das Script hochladen soll in Gänsefüßchen geschrieben, was bedeutet, dass anstatt meine Datei mit dem Namen filename (filename = gen.txt (als Beispiel)) eine Datei mit dem Namen "filename" (also ohne Dateiendung) hochgeladen wird.
Ich wollte den User selber bestimmen lassen, wie die Datei heißen soll, was auch funktioniert, jedoch ist das hochladen fehlerhaft.

Code: Alles auswählen

k = raw_input(colored('How should the .txt-File be called? ', 'red'))
filename = '{}.txt'.format(k)
up = raw_input(colored('Should the .txt-File be uploaded? (Y/N) ', 'red'))
[...]
if up == 'y':
        import ftplib
        session = ftplib.FTP('lucakoroll.de',username,passwd)
        file = open(filename,'rb')
        session.storbinary('STOR filename', file)
        file.close()
        session.quit()
Ich hoffe, dass mir jemand weiterhelfen kann. Danke im Voraus :)
MfG Luca.

Re: Variable als Filename

Verfasst: Samstag 12. Juli 2014, 10:39
von BlackJack
@lucanello: Du musst an der Stelle eine Zeichenkette erstellen die aus 'STOR ' gefolgt von dem Wert von `filename` besteht. Wie das geht weisst Du ja im Grunde schon, denn Du hast ja aus `k` den Wert für `filename` erstellt.

Import-Anweisungen gehören übrigens in aller Regel an den Anfang des Moduls. Dann sieht man leichter was das Modul alles verwendet und man schreibt auch nicht so leicht Import-Anweisungen unnötig mehrfach.

Re: Variable als Filename

Verfasst: Samstag 12. Juli 2014, 10:45
von lucanello
Vielen Dank für die schnelle Antwort, mit dem Code:

Code: Alles auswählen

session.storbinary('STOR {}.txt.format(k)', file)
lädt er mir jedoch widerum eine Datei namens "{}.txt.format(k)" hoch...
Mit dem Code:

Code: Alles auswählen

session.storbinary('STOR '{}.txt'.format(k)', file)
gibt er mir einen Syntax-Fehler zurück:

Code: Alles auswählen

  File "codegenerator.py", line 51
    session.storbinary('STOR '{}.txt'.format(k)', file)
                              ^
SyntaxError: invalid syntax

Re: Variable als Filename

Verfasst: Samstag 12. Juli 2014, 10:49
von EyDu
So funktioniert das nicht. Du kannst nicht so lange rumraten, bis du irgendwann die richtige Kombination von Anführungszeichen hast. Die Hilfe zur format-Methode gibt es übrigens hier. Schau dir mal den Unterschied zwischen deinem Code und dem dort gezeigtem Beispiel an. In deinem ersten Post hast du es ja auch schon richtig verwendet.

Re: Variable als Filename

Verfasst: Samstag 12. Juli 2014, 10:53
von lucanello
Aaaah vielen lieben Dank!
Hat geklappt :)