2016-11-12 4 views
-1

Ich möchte Python ständig einen Ordner scannen und sobald eine neue Datei im Ordner erstellt wird, um den Rest des Codes zu starten.Während Schleife Index Fehler

Allerdings bin ich hier fest:

import os 

os.chdir("path") 
a = os.listdir("path") 
initial = len(a) 


while True: 
     b = os.listdir("path") 
     final = len(b) 
     if final > initial: 
       c = list(set(b) - set(a)) 
       a.append(c[0]) 

c [0] angehängt wird eine jedoch den Code zur Liste stürzt dann mit diesem Fehler

a.append(c[0]) IndexError: list index out of range 
+0

'print()' der Wert von 'c' vor der Zeile' c = Liste (set (b) - Satz (a)) '. –

Antwort

0

Dies geschieht, weil c ist leer. Der einfachste Weg, um diese Linie Arbeit zu machen ist:

import os 

os.chdir("path") 
a = os.listdir("path") 
initial = len(a) 

while True: 
    b = os.listdir("path") 
    final = len(b) 
    if final > initial: 
     c = list(set(b) - set(a)) 
     if c: 
      a.append(c[0]) 

Und while True ohne break Aussage ist nicht so gute Idee ...

+0

Ich habe keine Pause hinzugefügt, weil ich möchte, dass das Skript unbegrenzt läuft. Da Dateien mehrmals am Tag hinzugefügt werden. –

0
import os 

os.chdir("path") 
a = os.listdir("path") 
initial = len(a) 

while True: 
    b = os.listdir("path") 
    final = len(b) 
    if final > initial: 
     c = list(set(b) - set(a)) 
     a.extend(c) 

Nur wenige Punkte 1. Gute Idee wenigen Sekunden hinzufügen auf Schlaf in der While-Schleife. 2. Was passiert, wenn eine Datei gelöscht wird und eine neue Datei hinzugefügt wird (möglicherweise kein gültiges Szenario)