Forum: PC-Programmierung Pyhon import textfile


von Alexander F. (Gast)


Lesenswert?

Hi,

ich möchte in Python ein Dialog öffnen um ein textfile zu importieren. 
Bisher habe ich eine Fest definierte Textdatei. import.txt
1
    def run(selfself):
2
        
3
        f = open('import.txt')
4
        
5
        file_names = []
6
        for file_name in f.readlines():
7
            file_name = file_name.strip()
8
            if ',' in file_name:
9
                for f in file_name.split(','):
10
                    file_names.append(f)
11
            else:
12
                file_names.append(file_name)
13
        print (file_names)


Jetzt möchte ich das erweitern, indem ich ein Dialogfenster öffne und 
die Datei die ich importieren möchte auswähle.
1
    def run(selfself):
2
            
3
   
4
        name = askopenfilename(filetypes =(("Text File", "*.txt"),("All Files","*.*")),
5
                               title = "Choose a file."
6
                               )
7
        print (name)
8
9
        with open(name,'r') as UseFile:
10
            print(UseFile.read())
11
            time.sleep(2)   
12
           
13
                
14
       
15
            f = open(UseFile)
16
                
17
            file_names = []
18
            for file_name in f.readlines():
19
                file_name = file_name.strip()
20
                if ',' in file_name:
21
                    for f in file_name.split(','):
22
                        file_names.append(f)
23
                else:
24
                    file_names.append(file_name)
25
            print (file_names)
26
            
27
            #weiterer Code zum verarbeiten des Files

Allerdings läuft das nicht so wie ich erwartet habe. Der Textinhalt wird 
nicht in das eigentliche Script genommen.

Die Fehlermeldung:
1
  f = open(UseFile)
2
TypeError: invalid file: <_io.TextIOWrapper name='D:/import.txt' mode='r' encoding='cp1252'>

Nur verstehe ich gerade nicht, was mir der Fehler sagen möchte!

von Tom (Gast)


Lesenswert?

with open(name,'r') as UseFile:
Das heißt UseFile ist schon eine geöffnete Datei. Als Parameter für open 
weiter unten taugt das TextIO-Ding, das das erste open zurückgegeben 
hat, nicht.

Das nächste Problem wird sein: mehrfach read()/readlines() auf die 
gleiche geöffnete Datei loslassen geht schief.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.