2016-05-02 6 views
0

Ich versuche, eine Datei zum Anhängen zu öffnen, aber ich bekomme immer die "außer" Teil meiner Versuch/Ausnahme Block, was bedeutet, es gibt eine Art Fehler mit dem Code, aber ich kann ' Es scheint so zu sein, als ob ich finde, was genau falsch ist. Es geschieht nur, wenn ich versuche, wie so eine neue Datei zu öffnen:Öffnen einer Datei für Append-Fehler

results = open("results.txt", "a") 
    results.append(score3) 

Hier ist mein vollständiger Code:

import statistics 

# input 
filename = input("Enter a class to grade: ") 

try: 
    # open file name 
    open(filename+".txt", "r") 
    print("Succesfully opened", filename,".txt", sep='') 
    print("**** ANALYZING ****") 
    with open(filename+".txt", 'r') as f: 
     counter1 = 0 
     counter2 = 0 
     right = 0 
     answerkey = "B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D" 
     a = [] 
     # validating files 
     for line in f: 
      if len(line.split(',')) !=26: 
       print("Invalid line of data: does not contain exactly 26 values:") 
       print(line) 
       counter2 += 1 
       counter1 -= 1 
      if line.split(",")[0][1:9].isdigit() != True: 
       print("Invalid line of data: wrong N#:") 
       print(line) 
       counter2 += 1 
       counter1 -= 1 
      if len(line.split(",")[0]) != 9: 
       print("Invalid line of data: wrong N#:") 
       print(line) 
       counter2 += 1 
       counter1 -= 1 
      counter1 += 1 
     #grading students 
      score = len(([x for x in zip(answerkey.split(","), line.split(",")[1:]) if x[0] != x[1]])) 
      score1 = 26 - score 
      score2 = score1/26 
      score3 = score2 * 100 
      a.append(score3) 
      # results file 
      results = open("results.txt", "a") 
      results.write(score3) 
     # in case of no errors 
     if counter2 == 0: 
      print("No errors found!") 
     # calculating 
     number = len(a) 
     sum1 = sum(a) 
     max1 = max(a) 
     min1 = min(a) 
     range1 = max1 - min1 
     av = sum1/number 

     # turn to int 
     av1 = int(av) 
     max2 = int(max1) 
     min2 = int(min1) 
     range2 = int(range1) 

     # median 
     sort1 = sorted(a) 
     number2 = number/2 
     number2i = int(number2) 
     median = a[number2i] 
     median1 = int(median) 

     # mode 
     from statistics import mode 
     mode = mode(sort1) 
     imode = int(mode) 



    # printing 
    print ("**** REPORT ****") 
    print ("Total valid lines of data:", counter1) 
    print ("Total invalid lines of data:", counter2) 

    print ("Mean (average) score:", av1) 
    print ("Highest score:", max2) 
    print("Lowest score:", min2) 
    print("Range of scores:", range2) 
    print("Median Score:", median1) 
    print("Mode score(s):", imode) 


    results.close() 


except: 
    print("File cannot be found.") 
+0

Können Sie den vollen Code mit versuchen/außer Blöcke ... –

+0

versuchen 'results.write (score3)' –

+0

@RamanBalyan Nur hinzugefügt –

Antwort

1

Ich glaube nicht, dass es eine Methode append zum Schreiben in Datei genannt wird. Sie können die Write- oder Writelines-Methode nur zum Schreiben verwenden. Wie Sie bereits die Datei mit Append-Berechtigungen geöffnet haben. Es wird nicht die alten Daten ändern und wird den Text an die Datei anhängen.

f=open('ccc.txt','a') 
f.write('Hellloooo') 
f.close() 

Ich hoffe, es hilft.

+0

Danke für die Antwort! Ich habe es einfach umgestellt und bekomme immer noch das gleiche Problem, irgendwelche Ideen? Ich habe oben mit meinem vollständigen Code bearbeitet. –

+0

versuchen Sie, die f.close() -Funktion nach der f.write() -Zeile zu halten. weil es die Schleife durchläuft und jedes Mal versucht, eine Datei zu öffnen, die bereits von einem anderen Prozess geöffnet wurde. – San

Verwandte Themen