2016-12-09 3 views
0

Ich habe Code, der die Informationen aus einer Datei und druckt das gleiche Design, aber mit unterschiedlichen Zeichen. Für examplem hat A.txt eine Textdatei mit dem Bild „A“ hergestellt aus * und:, aber ich brauche es gedruckt werden unter Verwendung von Groß- und Kleinbuchstaben ‚a‘Ändern von Informationen in Datei zum Drucken

import os 


def main(): 

    # relative path to the folder where you unzipped the ASCII art files 
    #folder = "stars" 
    # or use an absolute path to the folder. example: 
    folder = r"C:\Users\sarah\Documents\a CPS 111\Bonus PA\stars\stars" 

    # os.listdir(folder) returns a list of files in folder 
    file_list = os.listdir(folder) 
    letter_art = {} 

    word = str(input("Please input a letter: ")) 
    word = word.upper() 

    for fname in file_list: 

     letter_extension_list = fname.split(".") 

    for letter in word: 
     key = letter 
     value = letter_extension_list[1] 
     value = "%s."%(key) + value 
     letter_art[key] = value 

     fname = "\\".join([folder, value]) 
     print(fname) 

     infile = open(fname) 

     for line in infile.readlines: 
      line = line.split() 
      if "*" in line: 
       print(word.upper()) 
      else: 
       print(word.lower()) 



    infile.close() 



main() 

jetzt mein Fehler ist

TypeError: 'builtin_function_or_method' object is not iterable 
+0

Ich hoffe, Sie machen Readlines auf Dateiinhalt. Entfernen Sie die read() -Methode und rufen Sie die readlines-Methode wie readlines() auf. – Vineesh

Antwort

0

Try infile = open(fname).read()-infile = open(fname)

Sie können nicht readlines() von Zeichenfolge zu ändern.

TypeError: 'builtin_function_or_method' object is not iterable: Sie sollten () nach der integrierten Methode readlines hinzufügen, im Grunde versuchen Sie, über die Rückgabe dieser Methode anstelle der Methode selbst zu iterieren.

Auch line = line.split() entfernen, wenn Sie zu überprüfen versuchen, wenn * in der Zeichenfolge ist, line.split() schaltet line in [line]

+0

ich änderte es in 'infile = open (fname)' und jetzt ist der Fehler 'TypeError: 'builtin_function_or_method' Objekt ist nicht iterable –

+0

Versuchen Sie,'() 'nach' readlines' hinzuzufügen – Shane

0
for line in infile.readlines: 

readlines ist eine Funktion, und nicht wiederholt werden kann. Eine Funktion kann vom Aufrufer aufgerufen werden und Werte zurückgeben. Sie müssen also nur die Funktion aufrufen und über die folgenden Rückgabewerte iterieren:

Verwandte Themen