Textdatei erstellen mit Python?

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
knuffi123
User
Beiträge: 12
Registriert: Mittwoch 7. November 2007, 19:26

Hallo erstmal:)

Wie kann man denn eine Textdatei erstellen mit Python?

Ich kenne nur os.system("edit datei.txt")

Ich möchte aber eine Datei erstellen und bestimmte Werte in die Datei schreiben.
Mit der obigen Methode komme ich nicht zurecht weil man erst über den editor abspeichern muss...

Vielen Dank
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Code: Alles auswählen

f = file('spam.txt', 'w')
f.write('tolle erste Zeile\n')
f.write('tolle zweite Zeile\n')
print >>f, 'tolle dritte Zeile'
f.close()
rico
User
Beiträge: 10
Registriert: Samstag 4. November 2006, 13:21
Kontaktdaten:

ich machs mal kurz:

Code: Alles auswählen

help(open)
im Interpreter eingeben und aufmerksam lesen, da steht das am besten erklärt.

notfalls das hier durchlesen und dann irgendwann hier landen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

knuffi123 hat geschrieben:Wie kann man denn eine Textdatei erstellen mit Python?
Hallo knuffi123!

http://www.python-forum.de/topic-6157.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

knuffi123 hat geschrieben:Ich kenne nur os.system("edit datei.txt")
Das funktioniert spätestens dann nicht, wenn man Linux benutzt, wo es kein ``edit`` gibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
knuffi123
User
Beiträge: 12
Registriert: Mittwoch 7. November 2007, 19:26

OK vielen dank.

Ich würde gerne dieser Datei (unter Windows) bestimmte Zugriffsrechte geben. (Nur lesen in dem Fall)

Ich kenne hierfür os.chmod(path, mode)

Könnte mir jemand anhand eines Beispiels zeigen wie ich das korrekt anwende?


Vielen Dank
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hi knuffi123...

um das zu tun, musst du wissen, wie unter Windows Dateirechte vergibst. Ich persoenlich musste dazu gerade auch Google (bzw Scroogle) fragen.

Ich habe ein Beispiel gefunden, dass die Win32 extensions (zB bei ActivePython dabei) verwendet:

Code: Alles auswählen

import win32api, win32con

def hide_file( fn ):
    x = win32api.GetFileAttributes( fn )
    x |= win32con.FILE_ATTRIBUTE_READONLY
    win32api.SetFileAttributes( fn, x )

def unhide_file( fn ):
    x = win32api.GetFileAttributes( fn )
    x &= ~win32con.FILE_ATTRIBUTE_READONLY
    win32api.SetFileAttributes( fn, x )
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

knuffi123 hat geschrieben:Ich kenne hierfür os.chmod(path, mode)
Könnte mir jemand anhand eines Beispiels zeigen wie ich das korrekt anwende?
Hallo knuffi123!

Code: Alles auswählen

import os
import stat
os.chmod(r"J:\Ablage\aaa.txt", stat.S_IREAD)
os.chmod(r"J:\Ablage\aaa.txt", stat.S_IWRITE)
Mehr als das Schreibschutz-Flag setzen oder wieder wegnehmen geht aber nicht unter Windows. Für alle anderen Berechtigungen musst du entweder direkt auf die Windows-API zugreifen (=kompliziert) oder das Kommandozeilentool "Cacls" verwenden. Suche in der Windows-Hilfe (Start - Hilfe und Support) danach um mehr darüber zu erfahren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
knuffi123
User
Beiträge: 12
Registriert: Mittwoch 7. November 2007, 19:26

OK vielen Dank.
Wenn ich der Datei die Leserechte nehmen möchte, dann wird das mit chmod nicht funktionieren.
Hier wäre die Methode von nkoehring anzuwenden, denke ich?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

knuffi123 hat geschrieben:Wenn ich der Datei die Leserechte nehmen möchte, dann wird das mit chmod nicht funktionieren.
Hier wäre die Methode von nkoehring anzuwenden, denke ich?
Hallo knuffi123!

Weder, noch! Das ReadOnly-Flag ist ein Dateiflag. Aber bei einer Leseberechtigung handelt es sich um ein Benutzer-Zugriffsrecht. Diese Berechtigungen nennen sich ACLs und lassen sich am Einfachsten mit dem Kommandozeilentool **Cacls** setzen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
knuffi123
User
Beiträge: 12
Registriert: Mittwoch 7. November 2007, 19:26

gerold hat geschrieben:
knuffi123 hat geschrieben:Wenn ich der Datei die Leserechte nehmen möchte, dann wird das mit chmod nicht funktionieren.
Hier wäre die Methode von nkoehring anzuwenden, denke ich?
Hallo knuffi123!

Weder, noch! Das ReadOnly-Flag ist ein Dateiflag. Aber bei einer Leseberechtigung handelt es sich um ein Benutzer-Zugriffsrecht. Diese Berechtigungen nennen sich ACLs und lassen sich am Einfachsten mit dem Kommandozeilentool **Cacls** setzen.

mfg
Gerold
:-)
Danke:)

Nur muss ich mit cacls auch den Benutzer angeben für den ich die Rechte ändern will. Gibt es eine Möglichkeit das für alle Benutzer anzuwenden?
Vor allem wenn mein Programm auf einem anderen Rechner ausgeführt wird?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

knuffi123 hat geschrieben:Gibt es eine Möglichkeit das für alle Benutzer anzuwenden?
Hallo knuffi123!

Unter einem deutschen Windows XP gibt es die Gruppen "Administratoren" und "System". Diesen Gruppen sollte man normalerweise Vollzugriff (/F) geben -- muss aber nicht unbedingt sein. Als Mitglied der Gruppe "Administratoren" kann man sich sowiso Zugang zu jeder Datei besorgen, indem man deren Besitz übernimmt.

Unter einem deutschen Windows XP gibt es die Gruppe "Benutzer". Zu dieser Gruppe gehört normalerweise jeder Benutzer des Computers. Dieser Gruppe kannst du das benötigte Recht geben.

Vorsicht: Unter einem englischen Windows XP heißen die Gruppen anders. Und mit Windows Vista habe ich noch nichts gemacht.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
knuffi123
User
Beiträge: 12
Registriert: Mittwoch 7. November 2007, 19:26

gerold hat geschrieben:
knuffi123 hat geschrieben:Gibt es eine Möglichkeit das für alle Benutzer anzuwenden?
Hallo knuffi123!

Unter einem deutschen Windows XP gibt es die Gruppen "Administratoren" und "System". Diesen Gruppen sollte man normalerweise Vollzugriff (/F) geben -- muss aber nicht unbedingt sein. Als Mitglied der Gruppe "Administratoren" kann man sich sowiso Zugang zu jeder Datei besorgen, indem man deren Besitz übernimmt.

Unter einem deutschen Windows XP gibt es die Gruppe "Benutzer". Zu dieser Gruppe gehört normalerweise jeder Benutzer des Computers. Dieser Gruppe kannst du das benötigte Recht geben.

Vorsicht: Unter einem englischen Windows XP heißen die Gruppen anders. Und mit Windows Vista habe ich noch nichts gemacht.

mfg
Gerold
:-)
Hallo Gerold,

wie kann ich denn die Rechte einer ganzen Benutzergruppe manipulieren mit cacls?

Ich kenne nur diese Syntax: cacls test.txt /d knuffi123

So nehme ich dem Benutzer knuff123 alle Rechte an der text.txt Datei.

Wie mache ich das mit Gruppen?

Danke für die Hilfe:)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

knuffi123 hat geschrieben:wie kann ich denn die Rechte einer ganzen Benutzergruppe manipulieren mit cacls?

Ich kenne nur diese Syntax: cacls test.txt /d knuffi123
Hallo knuffi123!

Genau gleich.

Schau dir zuerst mal die Rechte an:

Code: Alles auswählen

cacls test.txt
Dann siehst du welche Gruppen zugriff darauf haben.

So nimmst du der Gruppe "Jeder" alle Rechte:

Code: Alles auswählen

cacls test.txt /d Jeder
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten