2017-05-08 7 views
0

Ich triying Änderung der Name der Datei mit Python, aber der Name ändert sich nicht. Das Programm muss ein Foto machen, speichern, auf einen Server kopieren, den Namen des kopierten Fotos ändern und den Namen des Originalfotos ändern. Also, zuerst definiere ich eine Variable, die ein genaues Datum und eine genaue Uhrzeit sein wird. Danach mache ich ein Foto und speichere es wie imagen.jpg Anschließend kopiere ich imagen.jpg in einen anderen Pfad (Serverpfad) und versuche seinen Namen in die Variable zu ändern, die ich vorher definiert habe. Der Name ändert sich jedoch nicht und die Datei wird entfernt. Danach ändere ich den Namen des ursprünglichen Fotos mit der gleichen Funktion und der Name wird geändert .... Ich weiß nicht, warum das kopierte Foto seinen Namen nicht ändert. Hier ist der Code:Wie benenne ich eine Datei mit Python?

import shutil 
import picamera 
import os 
fecha = time.strftime("%c") # En esta variable se guarda la fecha actual y la hora para renombrar la foto guardada   
camera.capture('/home/pi/Desktop/RaspAlarm/imagen.jpg') 
print("Capturando foto") 
time.sleep(5) 
print("Copiando foto al servidor") 
shutil.copy("/home/pi/Desktop/RaspAlarm/imagen.jpg", "/var/www/html/RaspAlarm/Fotos") 
time.sleep(1) 
os.listdir("/var/www/html/RaspAlarm/Fotos") 
os.rename ("/var/www/html/RaspAlarm/Fotos/imagen.jpg", fecha) 
print("Cambiando nombre al archivo") 
os.rename ("/home/pi/Desktop/RaspAlarm/imagen.jpg", fecha) 
time.sleep(1) 
print("Foto guardada") 

Können Sie mir helfen? Danke

Antwort

1

Ihr Zielname ist falsch. Sie rufen im Grunde:

os.rename("/var/www/html/RaspAlarm/Fotos/imagen.jpg", "Mon May 8 16:15:07 2017") 

während das, was Sie wollen, sieht eher aus wie

os.rename("/var/www/html/RaspAlarm/Fotos/imagen.jpg", "/var/www/html/RaspAlarm/Fotos/Mon May 8 16:15:07 2017.jpg") 

die Dokumentation prüfen os.rename

+0

Ja, ich weiß. Aber wenn ich versuche, den Namen des Originalfotos zu ändern, wird der Name erfolgreich mit derselben Funktion geändert. Warum? Oder, wie kann ich die .jpg Erweiterung hinzufügen, wie Sie vorher sagten? –

+0

@ SergioMuñoz eine Erweiterung hinzufügen können Sie [os.path.splitext] (https://docs.python.org/2/library/os.path.html#os.path.splitext) oder nur 'Pfad + Fecha verwenden + '.jpg'' wenn du nur mit jpegs zu tun hast. Und ja, sieh dir die [os.path] (https://docs.python.org/2/library/os.path.html) Bibliothek an. – teivaz

+0

Ok! Ich werde es versuchen. Aber es ist selten, dass auf dem Originalfoto der Name gut geändert wird –

1

Zuerst Ihr Ziel ist falsch! Du solltest den ganzen Pfad schreiben. Dann sollten Sie Leerzeichen in fecha Variable entfernen:

fecha = fecha.replace(' ', '') 
os.rename("/var/www/html/RaspAlarm/Fotos/imagen.jpg", "/var/www/html/RaspAlarm/Fotos/{}.jpg".format(fecha)) 
+0

Danke für Ihre Antwort. Aber warum ändert das Originalfoto seine Namen gut? Wenn ich die gleiche Funktion verwende –

+0

Ich denke nicht, os.remove funktioniert genau wie mv Befehl in Linux, wenn Sie Ziel als ein Wort nicht als ein Pfad setzen, wird es die Datei in das Verzeichnis der Funktion verschieben. Also ich denke, es funktioniert vielleicht für Sie, weil die Funktion im selben Verzeichnis wie das Originalfoto ist! –

Verwandte Themen