Pyhon import textfile

Gast #4501332
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!
Gast #4501350
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren