Seite 1 von 1
Datum
Verfasst: Montag 18. Oktober 2010, 12:08
von bluelagoon
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?
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:14
von Hyperion
Ein paar Anregungen:
- Dateien öffnet man folgendermaßen:
Code: Alles auswählen
with open() as irgendwas:
# irgendwas ist hier ein file object
- 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.
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:15
von bluelagoon
ok hab nun was Probiert und versucht
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 es funktioniert.

und danke Hyperion grad als ich sagen wollte ich habs hab ich deinen Post gesehn.

Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:25
von Hyperion
Bua... sieht aber nicht hübsch aus!
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'
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:29
von bluelagoon
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...
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!'
ich hoff ihr kennt euch noch aus
Also beim kill hab ich irgendwo nen Wurm und das Kopieren will auch net so ganz
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:36
von Hyperion
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 ^^.
Man kann das ja auch alles in eine Zeile quetschen, wenn man mag:
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'
Ich wollte Dir ja eher demonstrieren, wie ich vorgegangen bin. Und das wird eher ersichtlich, wenn man die Entwicklung Schritt für Schritt zeigt.
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.
bluelagoon hat geschrieben:
Bevor ich neuen Thread öffne gibt es sowas wie Ordner kopieren?
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...

)
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:39
von bluelagoon
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 ^^
Re: Datum
Verfasst: Montag 18. Oktober 2010, 12:41
von bluelagoon
höhö hat geklappt
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)
Re: Datum
Verfasst: Montag 18. Oktober 2010, 13:52
von BlackJack
@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.