2016-07-26 27 views
0

Ich mache gerade einen Disocrd-Bot, und eine Funktion davon ist ein sehr schnelles Update (um Ausfallzeiten zu minimieren). Um dies zu tun, haben wir innerhalb des Neustart-Skripts einen Code, der überprüft, ob ein USB-Gerät gemountet ist, und wenn dies der Fall ist, müssen die darin enthaltenen Dateien in den Bots-Ordner verschoben werden und aktualisieren den Bot entsprechend.Python: Dateien kopieren, um Orte abhängig von ihrem Namen festzulegen

async def cmd_restart(self, channel): 
    await self.safe_send_message(channel, ":wave:") 
    await self.disconnect_all_voice_clients() 
    if os.path.exists(/dev/[usb ID]/Update.zip): 
     zip_ref = zipfile.ZipFile(/dev/[usb ID]/Update.zip, 'r') 
     zip_ref.extractall(/root/MusicBot/musicbot) 
     zip_ref.close() 
    raise exceptions.RestartSignal 

Die Frage ist, wie der Bot die Dateien in mehrere Ordner migriert gewachsen sind, und dieses Skript nicht tut mehr den Job. Wir müssen die Dateien an verschiedenen Orten extrahieren, je nachdem, wie sie heißen.

Zum Beispiel würde "bot.py" in den musicbot-Ordner gehen, während config.ini in den config-Ordner gehen würde, und beide würden ihre Gegenstücke in den Ordnern ersetzen.

Aufgrund der Natur des Bots werden niemals neue Dateien erstellt, nur vorhandene Dateien werden ersetzt.

Verzeihen Sie mir für das Wandern, Es fühlt sich übermäßig kompliziert zu erklären.

Antwort

0

Zuerst müssen Sie eine Liste aller Dateinamen erhalten. Dann können Sie diese überprüfen und die Dateien in ihre jeweiligen Verzeichnisse stellen.

sollte wie folgt aussehen:

import os 
import shutil 

async def cmd_restart(self, channel): 
    await self.safe_send_message(channel, ":wave:") 
    await self.disconnect_all_voice_clients() 
    if os.path.exists("/dev/[usb ID]/Update.zip"): 
     zip_ref = zipfile.ZipFile("/dev/[usb ID]/Update.zip", 'r') 
     zip_ref.extractall("/root/MusicBot/musicbot/tmpExtract") 
     zip_ref.close() 
     files = os.listdir("/root/MusicBot/musicbot/tmpExtract") # get a list of all files that were in the zip 
     for filename in files: #check every file 
      if (filename == "meetsYourCondition.conf"): 
       shutil.move("/root/MusicBot/musicbot/tmpExtract/meetsYourCondition.conf", "/root/MusicBot/musicbot/DirectoryYouWantItToGoTo") 
      #elif (filename == "meetsYourNextCondition.conf"): 
      #... 
      # you get the idea 
    raise exceptions.RestartSignal 
+0

Dank, die perfekt gearbeitet – DNA