Probleme beim öffnen und beschreiben von dateien!?

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.
Antworten
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

Hey leute,
ich bin auf ein problem gestoßen, und zwar hab ich versucht aus python heraus eine datei namens "name" zu öffnen, laut meines tutorials würde man dass so öffnen

Code: Alles auswählen

 f=open('C:\Python26\name', 'r+')
das erste ist der pfad wo er die name findet, das zweite ist der modus. nur kommt dann immer der fehler

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    f=open('C:\Pythn26\name', 'r+')
IOError: [Errno 22] invalid mode ('r+') or filename: 'C:\\Pythn26\name'
die datei "name" existiert als name.txt .... wo ist der fehler? :(
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich wuerde sagen, dass du da einen Tippfehler hast. Schau mal in deinen Traceback und vergleich das mit deiner geposteten Zeile.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

ok oben hatte ich nen tippfehler im code den ich gepostet habe, ich geb jetzt den so an, wie ich es ins python shell eingebe

Code: Alles auswählen

f=open('C:\Python26\name', 'r+')

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    f=open('C:\Python26\name', 'r+')
IOError: [Errno 22] invalid mode ('r+') or filename: 'C:\\Python26\name'
>>> f=open('C:\text', 'r+')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    f=open('C:\text', 'r+')
IOError: [Errno 22] invalid mode ('r+') or filename: 'C:\text'
ich hab jetzt noch einen test mit einer datei gemacht, die ich auf c.\ gespeichert habe, namens text.....kommt python nicht mit dem format ".txt" klar? muss man die einfach nur als dateien also anhangslos speichern?
edit: oder liegt es an meinem betriebssystem? (win2000) eher unwahrscheinlich!?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

pfade in raw-strings angeben, steht doch im Traceback

Code: Alles auswählen

f = open(r'C:\test.txt', 'r+')
ansonsten

Code: Alles auswählen

f = open(r'C:\test.txt', 'r')
Zuletzt geändert von Dav1d am Montag 2. November 2009, 12:07, insgesamt 2-mal geändert.
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Die Lösung sollten raw-Strings sein!

Code: Alles auswählen

In [1]: name = 'C:\Python26\name'

In [2]: name
Out[2]: 'C:\\Python26\name'

In [3]: name = r'C:\Python26\name'

In [4]: name
Out[4]: 'C:\\Python26\\name'
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

danke, jetzt gehts...von raw strings war in dem tut noch nicht die rede >.< vielen dank nochmal.

nur eine frage hab ich noch, solche pfadangaben, kann man diese auch "dynamisch" regeln, also so, dass die auf jedem rechner funktionieren, egal wo der user diese ablegt? oder muss dann immer der code geändert werden?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

ich versteh nicht was du meinst.

Windows hat ganz andere Pfade wie Linux

funktionieren müsste auch:

Code: Alles auswählen

f = open('C:/test.html', 'r')
das sollte dann auf allen OS gehen
the more they change the more they stay the same
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

hm ok anders...wir bleiben bei windows...und ich schreib das programm jetzt so, dass die dateien alle in "C:\python26" befinden...ein anderer dem ich die dateien gebe, der nimmt die, und entpackt die in verzeichnis "E:\mushroom" so und jetzt verweist mein code aber auf "C:\python26" müsste doch dann nicht funzen oda?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Fantacoca hat geschrieben:danke, jetzt gehts...von raw strings war in dem tut noch nicht die rede >.< vielen dank nochmal.
Welches Tutorial nutzt Du denn?
nur eine frage hab ich noch, solche pfadangaben, kann man diese auch "dynamisch" regeln, also so, dass die auf jedem rechner funktionieren, egal wo der user diese ablegt? oder muss dann immer der code geändert werden?
Klar, da gibt es viele Möglichkeiten.

Man kann einen Pfad per Kommandozeilenparameter eingeben. Dazu kannst Du Dir das Modul optparse angucken.

Oder aber Du legst eine Configurationsdatei an. Da bietet sich für den Anfang das INI-Format an. Dieses kannst Du mit dem ConfigParser-Modul lesen / schreiben. Beide Module sind in der Standard-Bibliothek zu finden und dokumentiert.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

ich benutz das tut "Das Python-Tutorium version 2.1 von Guido van Rossum, Fred L. Drake, Jr., Hrsg." am anfang war es eigentlch gut erklärt, aber jetzt ab "module" etc geht es einfach nur noch "husch husch" mir ist gerade aufgefallen, dass die vom author angegebene "pickle.load" funktion auch nicht funzt so wie er diese angegeben hat, kommen fehlermeldungen 4 stück, ich glaube ich sollte mir für module etc nen anderes holen
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Code: Alles auswählen

>>> import os
>>> os.getcwd()
'C:\\Python26'
als tut a byte of python Deutsch: http://abop-german.berlios.de/
the more they change the more they stay the same
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Wenn du das meinst: http://www.python.org/doc/2.1.3/tut/tut.html

Das ist schon mehr als veraltet. Benutze besser A Byte of Python

EDIT: Dav1d ist schneller.
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

@ david und klip

danke, die deutsche übersetzung hab ich schon lange gesucht, aber nicht gefunden...da fällt mir ja jetzt schon fast ein "stein" vom herz....das tut was ich nutz wurde uns von der uni empfohlen mit den worten "die grundlagen liefert es" naja ich werde mich dann ma ans a byte of python setzen


danke nochmal (=
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

so hab noch was altes ausgegraben:

Code: Alles auswählen

import os,sys
print "CWD: ",os.getcwd()
print "Script: ",sys.argv[0]
print ".EXE: ",os.path.dirname(sys.executable)
print "Script dir: ", os.path.realpath(os.path.dirname(sys.argv[0]))
pathname, scriptname = os.path.split(sys.argv[0])
print "Relative script dir: ",pathname
print "Script dir: ", os.path.abspath(pathname)
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Klip hat geschrieben:Wenn du das meinst: http://www.python.org/doc/2.1.3/tut/tut.html

Das ist schon mehr als veraltet.
Es ist ja nicht so schwer, auf der Seite das aktuelle Tutorial zu finden ;-) Welche Version von Python nutzt Du denn?
Benutze besser A Byte of Python

EDIT: Dav1d ist schneller.
Sicher keine schlechte Empfehlung, aber das offizielle Tutorial halte ich dennoch ergänzend für wichtig.
Antworten