Neuling, viele Korpus öffnen.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

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

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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
BlackJack

@shuang: Du hast da auf dem Desktop eine `glob.py` rumliegen -- jetzt rate mal welches Modul Du da unter dem Namen `glob` importierst. ;-)
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

versteh ich nicht ganz :)

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


dankeschön
sharon shuang :P
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`).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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 
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

-no comment to Hyperion-



:K :K :K
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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:
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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.
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

habs gelöst, sehr nett dankeschön... ;)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

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
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Antworten