Seite 1 von 1

Probleme beim öffnen und beschreiben von dateien!?

Verfasst: Montag 2. November 2009, 11:38
von Fantacoca
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? :(

Verfasst: Montag 2. November 2009, 11:43
von cofi
Ich wuerde sagen, dass du da einen Tippfehler hast. Schau mal in deinen Traceback und vergleich das mit deiner geposteten Zeile.

Verfasst: Montag 2. November 2009, 11:50
von Fantacoca
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!?

Verfasst: Montag 2. November 2009, 12:03
von Dav1d
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')

Verfasst: Montag 2. November 2009, 12:04
von Hyperion
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'

Verfasst: Montag 2. November 2009, 12:09
von Fantacoca
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?

Verfasst: Montag 2. November 2009, 12:14
von Dav1d
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

Verfasst: Montag 2. November 2009, 12:16
von Fantacoca
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?

Verfasst: Montag 2. November 2009, 12:16
von Hyperion
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.

Verfasst: Montag 2. November 2009, 12:22
von Fantacoca
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

Verfasst: Montag 2. November 2009, 12:25
von Dav1d

Code: Alles auswählen

>>> import os
>>> os.getcwd()
'C:\\Python26'
als tut a byte of python Deutsch: http://abop-german.berlios.de/

Verfasst: Montag 2. November 2009, 12:26
von Klip
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.

Verfasst: Montag 2. November 2009, 12:30
von Fantacoca
@ 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 (=

Verfasst: Montag 2. November 2009, 12:46
von Dav1d
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)

Verfasst: Montag 2. November 2009, 12:53
von Hyperion
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.