2017-05-08 68 views
0

我正在使用Python更改文件的名稱,但名稱不會更改。 該程序必須拍照,保存,將其複製到服務器,更改複製照片的名稱並更改原始照片的名稱。 因此,首先我定義一個變量,它將成爲確切的日期和時間。之後,我拍攝一張照片並將其保存爲imagen.jpg 以下是我將imagen.jpg複製到其他路徑(服務器路徑),並嘗試將其名稱更改爲我之前定義的變量。但名稱不會更改,文件被刪除。 之後,我用相同的功能更改原始照片的名稱,並更改名稱....我不知道爲什麼複製的照片不改變他的名字。 這裏是代碼:如何用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") 

你能幫我嗎?謝謝

回答

1

您的目的地名稱有誤。你基本上呼籲:

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

,而你想要的東西看起來更像

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

檢查文檔os.rename

+0

是的我知道。但是,當我嘗試改變原始照片的名稱時,使用相同的功能成功更改了名稱。爲什麼?或者,我怎樣才能像以前說的那樣添加.jpg擴展名? –

+0

@SergioMuñoz添加一個擴展,你可以使用[os.path.splitext](https://docs.python.org/2/library/os.path.html#os.path.splitext)或只是'path + fecha +'.jpg'',如果你只處理jpeg。是的,請查看[os.path](https://docs.python.org/2/library/os.path.html)庫。 – teivaz

+0

好的!我會試試這個。但在原始照片名稱改變的情況很少見 –

1

起初你的目的地是錯誤的!你應該寫下所有的路徑。 然後你應該刪除空格變量:

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

謝謝你的回答。但爲什麼原始照片改變他的名字呢?如果我使用相同的功能 –

+0

我不這麼認爲,os.remove的工作方式與Linux中的mv命令完全相同,如果您將目標作爲單詞而不是路徑,它會將文件移動到函數的目錄中。所以我認爲它可能適合你,因爲該功能與原始照片位於同一個目錄中! –