Seite 1 von 1

Probleme mit dem Auslesen: open("file.txt", "r")

Verfasst: Donnerstag 5. April 2018, 15:20
von Epileptiker
Hallo. Ich möchte eine Datei über open("file.txt", "r") innerhalb meines Skripts auslesen. Sieht jemand, warum es nicht funktioniert? Sobald ich open("file.txt", "r") innerhalb des Skripts durch den Inhalt der zu öffnenden Dateien austausche, funktioniert es wieder ganz normal. Alle Dateien sind im selben Verzeichnis gespeichert.

Der Inhalt der zu öffnenden Dateien sieht etwa so aus:

Code: Alles auswählen

["Wort1", "Wort2", "Wort3", "usw"]
Mein Skript:

Code: Alles auswählen

import random, time, tweepy

liste1 = open("liste1.txt", "r")
liste2 = open("liste2.txt", "r")
liste3 = open("liste3.txt", "r")

def eins():
    return random.choice(liste1) + random.choice(liste2)

def zwei():
    return random.choice(liste2) + random.choice(liste3)

consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'XXX'
access_token_secret = 'XXX'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

while True:
    postthis = random.choice([eins,zwei])()
    if len(postthis) <= 140:
        api.update_status(status=postthis)
        time.sleep(10)
Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/User/Desktop/Beispiel/beispiel.py", line 22, in <module>
    postthis = random.choice([eins,zwei])()
  File "C:/Users/User/Desktop/Beispiel/beispiel.py", line 11, in zwei
    return random.choice(liste2) + random.choice(liste3)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 256, in choice
    i = self._randbelow(len(seq))
TypeError: object of type '_io.TextIOWrapper' has no len()
>>>
Wie gesagt, die Fehlermeldung tritt nur auf, wenn ich den Inhalt meiner Textfiles mit besagtem Befehl auslesen möchte.

Danke

Re: Probleme mit dem Auslesen: open("file.txt", "r")

Verfasst: Donnerstag 5. April 2018, 16:01
von Sirius3
@Epileptiker: Du liest keinen Inhalt, sondern speicherst in liste123 nur ein Fileobjekt, das, wie die Fehlermeldung sagt, keine Länge kennt. Du mußt die Dateien schon lesen und in den Listen speichern.

Re: Probleme mit dem Auslesen: open("file.txt", "r")

Verfasst: Donnerstag 5. April 2018, 16:48
von Epileptiker
Alles klar, ich bin davon ausgegangen, dass open("file.txt", "r") der dafür korrekte Befehl wäre, da das "r" schließlich für lesen steht... Kannst du mir sagen, welchen alternativen Befehl ich in mein Skript einbauen soll, damit es funktioniert?

Dass mein File keine Länge kennt verstehe ich nicht. Der Inhalt sind lediglich aneinander gereihte Begriffe in einer Liste. Was hat das mit der Länge in diesem Fall zu bedeuten?

Re: Probleme mit dem Auslesen: open("file.txt", "r")

Verfasst: Donnerstag 5. April 2018, 18:03
von __deets__
open oeffnet eine Datei. Dabei kann man eine Datei zum lesen, schreiben, schreiben mit anhaengen oder schreiben und lesen gleichzeitig (eher selten) oeffnen.

Dann ist sie aber nur offen. LESEN musst du dann immer noch. Also zB

Code: Alles auswählen

with open(dateiname, "r") as inf:
        inhalt = inf.read()

Re: Probleme mit dem Auslesen: open("file.txt", "r")

Verfasst: Donnerstag 5. April 2018, 18:06
von Sirius3
@Epileptiker: lies am besten in dem Medium, das Du zum Python-Lernen benutzt, wie man mit Dateien umgeht. Das steht da ausführlicher erklärt, als ich es hier könnte.

@__deets__: das hilft dem OP jetzt nicht wirklich weiter, weil er doch eine Liste braucht.