2017-03-01 4 views
0

Ich verwende gitpython, um eine Dateiverarbeitung durchzuführen. Alles funktioniert gut, außer für die d.new_file-Bedingung, wo ich diesen Typ Fehler festgestellt habe, wo ich NoneType und str miteinander nicht verketten kann.TypeError: nicht unterstützte Operandentyp (en) für +: 'NoneType' und 'str' mit GITPYTHON

Ich denke, dass d.a_path keine ist, aber ich kann nicht herausfinden, warum es nicht funktioniert, aber es funktioniert in der else-Bedingung.

for d in repo.head.commit.diff(None,create_patch=True): 
    if d.deleted_file: 
     print("deleted file") 

    elif d.new_file: 
     print(" new_file") 

     with open(main_dir,'a+') as main_file: 
      main_file.write(d.a_path +'\n') 

    elif d.renamed_file: 
     print("renamed file") 

    else: 
     print(" modified file") 

     with open(main_dir,'a') as main_file: 
      main_file.write(d.a_path+"\n") 

     handle_diff(d.diff) 

Jeder weiß, warum d.a_path ist keine für d.new_file Bedingung?

Antwort

1

Dies ist documented behaviour:

There are a few cases where None has to be expected as member variable value:

New File:

a_mode is None 
a_blob is None 
a_path is None

Deleted File:

b_mode is None 
b_blob is None 
b_path is None

Der Pfad der neuen Datei in b_path für eine neue Datei sein sollte, nicht in a_path, da die Datei nicht in a noch nicht gab.

Verwandte Themen