mein erstes Programm - brauche Rat!

Du hast eine Idee für ein Projekt?
Yasser

Mittwoch 26. Januar 2005, 15:01

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 26. Januar 2005, 15:10

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

Mittwoch 26. Januar 2005, 15:42

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:

Mittwoch 26. Januar 2005, 16:34

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

Donnerstag 27. Januar 2005, 00:28

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 27. Januar 2005, 13:43

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 Modvoice
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 27. Januar 2005, 14:14

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 27. Januar 2005, 14:19

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

Donnerstag 27. Januar 2005, 14:31

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

Freitag 28. Januar 2005, 19:16

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:

Freitag 28. Januar 2005, 19:31

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

Freitag 28. Januar 2005, 21:36

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

Freitag 28. Januar 2005, 21:38

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 Modvoice
hammurabi
User
Beiträge: 13
Registriert: Mittwoch 26. Januar 2005, 14:27

Sonntag 30. Januar 2005, 22:59

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:

Montag 31. Januar 2005, 00:31

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]
Antworten