mein erstes Programm - brauche Rat!

Du hast eine Idee für ein Projekt?
Yasser

Hallo Python-Gemeinde,

ich habe keine Programmier-Erfahrung und will ein Programm schreiben, Ehe ich anfange nachzuforschen und zu schreiben, möchte ich das Prog hier kurz beschreiben und wie ich es machen will.

Das Programm soll folgendes können:

1 x täglich (mit cron) soll es abgerufen werden.
Datum auslesen
Dann in einer Datei (Auswahl der Datei abhängig vom Monat)
ein Zeichen (Abhängig vom Tag) aus einer Zeichenkette isolieren.
Das Zeichen soll einer Datei zugeordnet werden,
in der eine Addresse steht.
Diese Addresse soll in ein LaTeX-Dokument eingebunden werden
und dann mit xpdf --fullscreen dargestellt werden.

Beispiel für den 10. März
Datei "März": abcde fabcd efaba ccaff aeafb defab a
10. Zeichen ist d.

Addresse Datei d:
Familie Mustermann
Musterstraße 10
12345 Musterstadt

Im Tex-Dokument:
Jede Zeile der Addresse ersetzt eine Variable in der Tex-Datei.

Ausgabe der neuen Text-Datei, pdflatex, xpdf

Was meint ihr dazu? Ist das so sinnvoll?

Grüße
hammurabi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, das ist ja kein Problem, einfach realisierbar, sofern du die TeX Datei bearbeiten kannst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

ja, alles bis zum tex dokument...von tex zu pdf gibts ja bestimme progs.

also dann, viel glück :)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Yasser,

mittels Reportlab kannst du auch direkt aus Python pdfs erzeugen.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Ein kleiner Schritt für einen (Python-)Programmierer, ein großer Schritt für mich :D

Code: Alles auswählen

f = file('/home/yasser/Notdienst/Januar', 'r')
s = f.read()
s = s.replace(" ","")
import time
l = time.localtime()
p = l[2]
s = s[p-1:p]
print s
Dieses Ding liest doch tatsächlich eine Datei aus, macht daraus einen String und holt das Zeichen an der Position, die dem Tag entspricht.

Ich danke diesem Forum!!! Yeeeha!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Darf ich auch ein paar Stilistische Anmerkungen machen?

Imports stehen meist oben im Quelltext, und filelike Objekte sind normalerweise mit .close() zu schließen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi hammurabi,

hab mir mal erlaubt dein Scriptchen etwas ins reine zu schreiben:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import time

fname = '/home/yasser/Notdienst/Januar'

# Datei öffnen und in String einlesen
f = file(fname, 'r')
s = f.read()
f.close()

# String aufbereiten, Leerzeichen löschen
s = s.replace(" ","")

# aktuelle Zeit holen und Tag extrahieren
l = time.localtime()
p = l[2]

# Buchstabe des aktuellen Tages aus String lesen und ausgeben
s = s[p-1]
print s
Das coding solltest Du noch auf den Zeichensatz stellen, den dein System bzw. dein Editor verwendet.
Dateinamen schreibe ich eigentlich immer in eine Variable am Anfang eines Scripts, dann kann man sie, auch wenn sie öfter in einem Script verwendet werden, schnell finden und gegebenenfalls ändern.
s[p-1:p] ist nicht sehr sinvoll, da der Slice eine Länge von 1 hat und kann durch s[p-1] ersetzt werden.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und die Variablennamen etwas länger wählen als einen Buchstaben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Heute Abend mache ich weiter und werde mir hoffentlich noch ein paar Tipps abholen können.
Danke! :D
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Ich habe ein kleines Zwischenproblem:
Wie kann ich erreichen, dass Zeilenumbrüche nicht mitgezählt werden beim Indizieren?
Wäre dankbar für ein Stichwort, welches mir das Nachforschen erleichtert.

Thx im Voraus!

hammurabi (alias Yasser)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Zeilenumbrüche auch rausreplacen

Code: Alles auswählen

s = s.replace(" ","").replace("\n","")
oder mit dem Modul re

Code: Alles auswählen

s = re.sub(r"\s+", "", s)
Damit werden alle Whitespaces, auch Tabs, eliminiert.
Dazu muss noch re mit import re am Anfang des Scripts importiert werden.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Dieses Forum könnte maßgeblich daran beteiligt sein, dass mich Python über die anfängliche Zeit des Übereifers hinaus begeistern wird :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

hammurabi hat geschrieben:Dieses Forum könnte maßgeblich daran beteiligt sein, dass mich Python über die anfängliche Zeit des Übereifers hinaus begeistern wird :)
Willkommen im Club, mich hat es schon 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Ich muss mich jetzt erstmal mit regulären Ausdrücken beschäftigen.

Wie das mit dem Modul re funktioniert muss ich (noch!) nicht verstehen, oder?

ich habe das hier gefunden:
http://python.org/doc/2.3.3/lib/re-objects.html
Bin ich da richtig, um weiter zu recherchieren?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Es gibt auch noch ein HOWTO zu Regularexpressions und Python:
http://www.amk.ca/python/howto/regex/


Dookie
[code]#!/usr/bin/env python
import this[/code]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

hammurabi hat geschrieben:ich habe das hier gefunden:
http://python.org/doc/2.3.3/lib/re-objects.html
Bin ich da richtig, um weiter zu recherchieren?
Nimm doch die immer aktuellste Doku: http://docs.python.org/lib/re-objects.html
Ich kenne noch einen Regex-Kurs, aber um Python zu programmieren brauchst du normalerweise keine Regex, im Gegensatz zu Ruby und Perl. Ich kann Regex auch nicht richtig, ich nehme immer Dookie seine her 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Ich(Wir) bin(sind) jetzt soweit, dass ich die Gruppe aus den Monats-Dateien abhängig vom Datum auslesen kann.
Das kann mein (unser) Proggie zwar schon seit längerem,
mein Linux spinnt derweil aber ein wenig ...

Die nächste Frage ist jetzt, ob es besser ist, die Dateien, die zur Anzeige gebracht werden, "on the fly" zu erzeugen oder sie einfach mit Office zu machen.
"On the fly" ist cooler aber das andere mit sicherheit flexibler.

Diese entscheidung wird man mir aber sicher kaum abnehemen können.

Was ihr mir raten könnt ist das Format für die Anzeige: pdf, html, ....?
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Der Gast war ich :roll:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Anonymous hat geschrieben:Was ihr mir raten könnt ist das Format für die Anzeige: pdf, html, ....?
Wie wärs mit reST?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Ich kann mir unter rest noch nicht so ganz was vorstellen.

Z.Zt. bin ich mit der Hardware für das Projekt beschäftigt.

Ist reST so ähnlich wie latex, nur dass es nicht ganz so mächtig ist, der "Quellcode" aber quasi "vorformatiert" ist?
Antworten