Seite 1 von 2

Neuling, viele Korpus öffnen.

Verfasst: Montag 5. April 2010, 14:51
von shuang
Hi leute,

bin neu hier, hab da mal eine Frage.

kann ich mit Python, viele Dateien gleichtzeitig öffnen?

Also nicht jedes einzeln

file1= open(datei1)
file2= open(datei2)
usw...

sondern einfach den Pfad geben und alle Textdatein zusammen lesen?

Hab sehr lang recherchiert es gibt da einen Modul. glob.


import glob

files = glob.glob("*.txt")
for f in files:
text = open(f)
for line in text.readlines():

line = line.rstrip("\n")

aber hier kommt bei mir immer eine Fehlermeldung....

bedanke mich...

Sharon :shock: :shock: :shock: :shock:

Verfasst: Montag 5. April 2010, 14:57
von EyDu
Hallo und willkommen im Forum!

Und die Fehlermeldung möchtest du uns jetzt vorenthalten? ;-)

Sebastian

Verfasst: Montag 5. April 2010, 15:00
von shuang
Traceback (most recent call last):
File "C:\Users\Sharon\Desktop\programm.py", line 3, in <module>
import glob
File "C:\Users\Sharon\Desktop\glob.py", line 8, in <module>
argv[1] = glob.glob('*.py')
TypeError: 'module' object is not callable

Verfasst: Montag 5. April 2010, 15:34
von BlackJack
@shuang: Du hast da auf dem Desktop eine `glob.py` rumliegen -- jetzt rate mal welches Modul Du da unter dem Namen `glob` importierst. ;-)

Verfasst: Montag 5. April 2010, 15:43
von shuang
versteh ich nicht ganz :)

und wie muss es genau lauten? damit es funktioniert? :)


dankeschön
sharon shuang :P

Verfasst: Montag 5. April 2010, 15:49
von BlackJack
@shuang: Du importierst da das Modul `glob` auf dem Desktop statt dem `glob`-Modul aus der Standardbibliothek. Du musst das da auf dem Desktop löschen oder umbenennen. Inklusive eventueller Kompilate (`glob.pyc`).

Verfasst: Montag 5. April 2010, 15:49
von Hyperion
shuang hat geschrieben:versteh ich nicht ganz :)
Du importierst einfach das falsche Modul! Bennene die Datei glob.py, die auf dem Desktop (oder allgemein im selben Verzeichnis wie Dein aufgerufenes Script) liegt einfach mal um.

Außerdem kann man über die Zeilen einer Datei direkt iterieren:

Code: Alles auswählen

for fname in glob.glob("*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            print line
Außerdem Datein immer mit "with" öffnen, damit sie auch sauber geschlossen werden.

Verfasst: Montag 5. April 2010, 17:24
von shuang
import glob

fname = "C://Users/Sharon/Desktop/Korpus/"



for fname in glob.glob("*.txt"):
with open(fname, "r") as infile:
for line in infile:
print line


Resultat:

Traceback (most recent call last):
File "C:/Users/Sharon/Desktop/pythonas.py", line 1, in <module>
import glob
File "C:/Users/Sharon/Desktop\glob.py", line 8, in <module>
argv[1] = glob.glob('*.py')
TypeError: 'module' object is not callable

Verfasst: Montag 5. April 2010, 17:31
von shuang
Meine Herren ;), ich mache da was falsch :)))))))))))))))
Ich habe auf dem Desktop einen Ordner, mit vielen .txt Dateien, ich möchte Sie alle auf einmal einlesen lassen.
Wenn ich den Code hier unten eingebe. Komme ich nicht zum Ziel....leider

Code: Alles auswählen

import glob

fname = "C://Users/Sharon/Desktop/Korpus/"



for fname in glob.glob("*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            print line 

Verfasst: Montag 5. April 2010, 17:33
von Hyperion
shuang hat geschrieben:import glob

fname = "C://Users/Sharon/Desktop/Korpus/"



for fname in glob.glob("*.txt"):
with open(fname, "r") as infile:
for line in infile:
print line


Resultat:

Traceback (most recent call last):
File "C:/Users/Sharon/Desktop/pythonas.py", line 1, in <module>
import glob
File "C:/Users/Sharon/Desktop\glob.py", line 8, in <module>
argv[1] = glob.glob('*.py')
TypeError: 'module' object is not callable
Dein ganzes Posting hier ist für den *****! Sorry, auch wenn Du hier Neuling bist, bemühe Dich doch mal die Forum-Regeln zu lesen. Dann würdest Du wissen, dass es hier code-Tags gibt, die den Code nach Python-Manier setzen - ohne die Einrückungen bringt einem der Code herzlich wenig! Schließlich solltest auch Du wissen, dass es bei Python auf die Einrückung ankommt.

Was soll das Posting eigentlich aussagen? Vermutlich, dass Du trotzdem diesen Fehler bekommst - aber das kann man auch EXPLIZIT erwähnen und nach einer Lösung fragen! (z.B. "Ich habe jetzt alles so umgesetzt, wie ihr das gesagt habt und bekomme nun diesen Fehler...")
So müssen wir uns das selber denken; das ist für eine konstruktive Antwort eher schlecht! Schließlich willst DU Hilfe und solltest UNS motivieren, Dir zu helfen. Durch Kommentar lose Postings in denen nur Code und Fehlermeldungen hingeklatscht werden, lockst Du hier sicherlich weniger hilfsbereite Menschen an...

Als Antwort darauf kann man locker sagen: Lies doch mal die Postings genau durch! Du solltest die Datei glob.py umbennen, löschen oder sonst wie vernichten. Du importierst - wie auch schon erwähnt - nicht das Modul glob, sondern diese eigene glob.py Datei.

Wenn Du Sprachschwierigkeiten hast, dann musst Du Dich eben doppelt bemühen, das hier Geschriebene zu verstehen. Das sage ich "meinen" Chinesen auch jedes Semester aufs neue...

Verfasst: Montag 5. April 2010, 17:49
von shuang
-no comment to Hyperion-



:K :K :K

---

Verfasst: Montag 5. April 2010, 17:50
von shuang
Meine Herren , ich mache da was falsch :))))))))))))))
Ich habe auf dem Desktop einen Ordner, mit vielen .txt Dateien, ich möchte Sie alle auf einmal einlesen lassen.
Wenn ich den Code hier unten eingebe. Komme ich nicht zum Ziel....leider

Code: Alles auswählen

import glob

fname = "C://Users/Sharon/Desktop/Korpus/"



for fname in glob.glob("*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            print line 
:lol:



:arrow: Damit auch alles schön lustig bleibt hier ein Spruch :

Gibts Dich auch in intelligent? Du hast einen IQ von 6... bei 8 grunzt die Sau!

Verfasst: Montag 5. April 2010, 17:55
von Hyperion
Und Du glaubst durch das sinnlose erneute Posten desselben Postings (nun schon das dritte seiner ARt) bekommst Du schneller Hilfe?

Es wurde doch nun schon doppelt und dreifach gesagt, wo das Problem liegt. Also frage konkret nach, was Du an den Antworten nicht verstehst oder lies sie dir noch mal genau durch!

Re: ---

Verfasst: Montag 5. April 2010, 17:56
von Hyperion
shuang hat geschrieben: :arrow: Damit auch alles schön lustig bleibt hier ein Spruch :

Gibts Dich auch in intelligent? Du hast einen IQ von 6... bei 8 grunzt die Sau!
Bei dem Thread-Verlauf wissen wir ja alle, wer die 6 hat... :twisted:

Verfasst: Montag 5. April 2010, 18:10
von shuang
Ich möchte einfach nur wissen, wieso mein Ordner= Korpus
nicht eingelesen wird.
Ich möchte doch einfach nur die Textdateien im Ordner Korpus auf dem Desktop einlesen lassen, sonst nichts.


Wenn ich das ganze über die Eingabeaufforderung durchführe, bekomme ich eine txt datei aus dem Eigene Dateien Ordner aufgelistet. Obwohl ich doch den genauen Pfad auf meinem Desktop zeige.

Verfasst: Montag 5. April 2010, 18:17
von shuang
habs gelöst, sehr nett dankeschön... ;)

Verfasst: Montag 5. April 2010, 18:30
von INFACT
shuang hat geschrieben:Ich möchte einfach nur wissen, wieso mein Ordner= Korpus
nicht eingelesen wird.
Ich möchte doch einfach nur die Textdateien im Ordner Korpus auf dem Desktop einlesen lassen, sonst nichts.


Wenn ich das ganze über die Eingabeaufforderung durchführe, bekomme ich eine txt datei aus dem Eigene Dateien Ordner aufgelistet. Obwohl ich doch den genauen Pfad auf meinem Desktop zeige.
Kenne glob zwar nicht aber das sollte funtkionieren:

Code: Alles auswählen

import glob, os

path = "C:\\Users\Sharon\Desktop\Korpus"



for fname in glob.glob("*.txt"):
    with open(os.path.join(path, fname), "r") as infile:
        for line in infile:
            print line 
Habs nicht ausprobiert.

Verfasst: Montag 5. April 2010, 18:54
von shuang
Ist es möglich, nachdem ich die z.b 10 verschiedenen Texte mit glob eingelesen habe, den Inhalt jedes einzelnen Textes separat zu zählen?

Verfasst: Montag 5. April 2010, 19:05
von shuang
Also, wenn ich das genauso in der Form eingebe, liest er die Textdateien ein, jedoch kann ich die Worte in den Textdateien nicht zählen lassen.
Für jede einzelne Textdatei > Zahl der Worte.

Code: Alles auswählen

import glob

count=0

for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            for word in line:
                count+= 1
                print line

Verfasst: Montag 5. April 2010, 19:11
von INFACT
shuang hat geschrieben:Also, wenn ich das genauso in der Form eingebe, liest er die Textdateien ein, jedoch kann ich die Worte in den Textdateien nicht zählen lassen.
Für jede einzelne Textdatei > Zahl der Worte.

Code: Alles auswählen

import glob

count=0

for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            for word in line:
                count+= 1
                print line

Code: Alles auswählen

import glob

count=0

for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
    with open(fname, "r") as infile:
        for line in infile:
            for word in line.split():
                count+= 1
                print line