Hallo
Ich möchte gern in mein Skript einbauen das das aktuelle Datum in eine Datei schrieben wird
hab mir gedacht sowas wie:
Datei öffnen und schreiben also
file=open('datei.py' 'w+')
und in der Datei stehen 2 Zeilen
in der zweiten Zeile steht
Sidate= 29.10.2009
genau dieses Datum muss dann immer ausgetauscht werden mit dem heutigen Datum.
quasi:
Sidate= 18.10.2010
hat jemand vll eine Idee wie ich das umsetze?
Datum
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ein paar Anregungen:
- Dateien öffnet man folgendermaßen:
- re-Modul zum Parsen und Finden des Datums
- datetime Modul für das aktuelle System-Datum und per strftime-Funktion / Methode das in Form bringen
Ich denke damit solltest Du zum Ziel kommen.
- Dateien öffnet man folgendermaßen:
Code: Alles auswählen
with open() as irgendwas:
# irgendwas ist hier ein file object
- datetime Modul für das aktuelle System-Datum und per strftime-Funktion / Methode das in Form bringen
Ich denke damit solltest Du zum Ziel kommen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 216
- Registriert: Mittwoch 25. August 2010, 12:26
ok hab nun was Probiert und versucht
und es funktioniert.
und danke Hyperion grad als ich sagen wollte ich habs hab ich deinen Post gesehn.
Code: Alles auswählen
date = time.mktime(time.strptime(re.split('^sidate\s*=([0-9]{2}\.[0-9]{2}\.[0-9]{4})?$', line.lower().strip())[1], '%d.%m.%Y')).replace('%d.%m.%Y','localtime')
und danke Hyperion grad als ich sagen wollte ich habs hab ich deinen Post gesehn.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Bua... sieht aber nicht hübsch aus!
Ich dachte eher so in dieser Richtung:
Ich dachte eher so in dieser Richtung:
Code: Alles auswählen
In [30]: from datetime import date
In [31]: import re
In [32]: text = u"""
bla schwall sonst was
Sidate= 29.10.2009
badads asdasfasfasf
"""
In [37]: tokens = re.split("\d{2}\.\d{2}\.\d{4}", text)
In [38]: tokens
Out[38]: [u'\nbla schwall sonst was\nSidate= ', u'\nbadads asdasfasfasf\n']
In [39]: date.today().strftime("%d.%m.%Y")
Out[39]: '18.10.2010'
In [40]: today = date.today().strftime("%d.%m.%Y")
In [41]: today.join(tokens)
Out[41]: u'\nbla schwall sonst was\nSidate= 18.10.2010\nbadads asdasfasfasf\n'
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 216
- Registriert: Mittwoch 25. August 2010, 12:26
sieht vll nich hübsch aus aber wenn ich deine zeilen einbau dann hab ich noch mehr zeilen und ich glaub so wie ihr am Freitag schon geguggt habt das das keine gute Idee is ^^.
Bevor ich neuen Thread öffne gibt es sowas wie Ordner kopieren?
denn ich muss ein update skript machen das mein jetziges Skript beendet bzw killt. alles kopiert in nen Ordner wirft das alte löscht und das Skript was ich geschrieben hab wieder startet
derzeit sieht das mal so aus...
ich hoff ihr kennt euch noch aus
Also beim kill hab ich irgendwo nen Wurm und das Kopieren will auch net so ganz
Bevor ich neuen Thread öffne gibt es sowas wie Ordner kopieren?
denn ich muss ein update skript machen das mein jetziges Skript beendet bzw killt. alles kopiert in nen Ordner wirft das alte löscht und das Skript was ich geschrieben hab wieder startet
derzeit sieht das mal so aus...
Code: Alles auswählen
#!/usr/bin/env python
from __future__ import with_statement
import os,signal
import cStringIO
import os.path
import sys
import re
config_file = 'dp_clienttask.ini'
choices = (
'9', # 9: Updatet the Python-Script.
)
class Backup():
def __init__(self,config_file, choices,):
self.config_file=config_file
self.choices = choices
def read_config(self):
choice= None
try:
file = open(self.config_file)
for line in file.readlines():
if line.lower().strip().startswith("boottime"):
choice = re.split('^boottime\s*=\s*([0-9]+)[^0-9]*?$', line.lower().strip())[1]
except Exception, e:
print >> sys.stderr, '''Error: File "%s" (configuration file) couldn't be read!\nQuitting.''' % self.config_file
file.close()
def kill_script(self):
pid = os.getpid()
open('dp_backup.lock', 'w').write(str(pid))
with open('dp_backup.lock') as config:
for line in config:
os.kill(int(line), signal.SIGTERM)
def copy_script(self):
shutil.copy('dp_client.py','Linux_Client')
def run_script(self):
os.system('dp_client.py')
print 'dp_client.py wird gestartet!'
Also beim kill hab ich irgendwo nen Wurm und das Kopieren will auch net so ganz
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Man kann das ja auch alles in eine Zeile quetschen, wenn man mag:bluelagoon hat geschrieben:sieht vll nich hübsch aus aber wenn ich deine zeilen einbau dann hab ich noch mehr zeilen und ich glaub so wie ihr am Freitag schon geguggt habt das das keine gute Idee is ^^.
Code: Alles auswählen
In [42]: date.today().strftime("%d.%m.%Y").join(re.split("\d{2}\.\d{2}\.\d{4}", text))
Out[42]: u'\nbla schwall sonst was\nSidate= 18.10.2010\nbadads asdasfasfasf\n'
Zudem ist die schiere Anzahl an Zeilen an sich kein Problem, sofern der Code dadurch leserlich wird. Man kann auch zu viel in eine Zeile quetschen... ich denke genau da liegt bei Deiner Variante das Problem. Meine Variante kann man inkl. der "with open..."-Zeile lesbar in drei bis vier Zeilen schreiben.
Schau doch mal in der Doku nach. Kapitel 11 schreit doch vom Titel her danach, als das man wenn dort fündig würde. (Und das wird man auch... )bluelagoon hat geschrieben: Bevor ich neuen Thread öffne gibt es sowas wie Ordner kopieren?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 216
- Registriert: Mittwoch 25. August 2010, 12:26
hab heut doku über shutil.copy gelesen aber ich seh grad das irgendwo anders mein Fehler liegt denn mein unterer Teil vom Code ist nicht eingefärbt.
Naja ich hab für das Skript ne Doku keine Angst falls ich mal Nachfolger haben werd (Warscheinlichkeit von 100%) dann kann er meine dazu-verfasste Doku lesen und die ist ausführlich erklärt ^^
Naja ich hab für das Skript ne Doku keine Angst falls ich mal Nachfolger haben werd (Warscheinlichkeit von 100%) dann kann er meine dazu-verfasste Doku lesen und die ist ausführlich erklärt ^^
-
- User
- Beiträge: 216
- Registriert: Mittwoch 25. August 2010, 12:26
höhö hat geklappt
verbesserter Code:
verbesserter Code:
Code: Alles auswählen
def kill_script(self):
pid = os.getpid()
open('dp_backup.lock').write(str(pid))
with open('dp_backup.lock') as config:
for line in config:
os.kill(int(line), signal.SIGTERM)
@bluelagoon: Kannst Du vielleicht mal den Sinn einer Lock-Datei erklären für einen Prozess der direkt nach dem Anlegen der Datei gekillt wird!? Und warum Du die PID zum killen aus der Datei liest? Du hast die doch schon im Programm.