Hey liebe Freunde also ich bin’s wieder jetzt bin ich wieder auf Granit gestoßen. Ich soll eine Datei erstellen die nicht nur eine .TXT Datei einliest sondern auch daraus eine Homepage macht.
Folgendes hab ich jetzt gemacht:
#VariableName
def main():
name = input("geben Sie bitte Ihren Namen ein: ")
file = name + '.txt'
infile = open(file, 'r')
description = infile.readline()
name1 = name
infile.close()
outfile = open('homepage.html', 'w')
outfile.write("""<html>
<head>
<title>My Personal Web Page</title>
</head>
<body>
<center>
<h1>""" + name1 + """</h1>
</center>
<hr />"""
+ description + """
<hr />
</body>
</html>""")
outfile.close()
main()
Lass ich die jetzt laufen bekomme ich die Fehlermeldung
Traceback (most recent call last):
File "/private/var/mobile/Containers/Shared/AppGroup/929F748D-4A39-44E4-A1F7-8DC0847C6EDA/File Provider Storage/Uni Stuff/Python/Aufgabe_2.4_Team_20.py", line 31, in <module>
main()
File "/private/var/mobile/Containers/Shared/AppGroup/929F748D-4A39-44E4-A1F7-8DC0847C6EDA/File Provider Storage/Uni Stuff/Python/Aufgabe_2.4_Team_20.py", line 13, in main
outfile = open('homepage.html', 'w')
PermissionError: [Errno 1] Operation not permitted: 'homepage.html'
Kann mir einer erklären warum oder wo mein Fehler liegt? Mach das ganze auf meinem IPad liegt es vielleicht daran?
Ich danke jetzt schonmal im Vorraus
Hompage erstellen.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
für das Verzeichnis, in dass du schreiben möchtest, hast du keine Schreibrechte. Warum auch immer. Kann schon an iOS liegen. Die ganzen mobilen OS sind ja ziemlich restriktiv, was das angeht.
Gruß, noisefloor
für das Verzeichnis, in dass du schreiben möchtest, hast du keine Schreibrechte. Warum auch immer. Kann schon an iOS liegen. Die ganzen mobilen OS sind ja ziemlich restriktiv, was das angeht.
Gruß, noisefloor
noisefloor hat geschrieben: ↑Donnerstag 9. Dezember 2021, 13:05 Hallo,
für das Verzeichnis, in dass du schreiben möchtest, hast du keine Schreibrechte. Warum auch immer. Kann schon an iOS liegen. Die ganzen mobilen OS sind ja ziemlich restriktiv, was das angeht.
Gruß, noisefloor
Ich danke dir das ist so nervig-.-
Ich hab mal unserem Dozenten geschrieben, mal stehen was er dazu sagt
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
na ja, ein iPad ist generell nicht die ideale Umgebung zum Entwickeln - eben wegen der Einschränkungen, was Zugriffe auf Verzeichnisse etc angeht.
Plus du bist ja auch limitiert, was das nachinstallieren von Modulen angeht.
Zum Code:
Strings setzt man nicht mit + zusammen, dafür gibt es ab Python 3.6 f-Strings oder alternativ die format-Methode von Strings.
Zum Öffen von Dateien nutzt man besser das `with` Statement, dann kümmert sich Python um da Schließen der Datei.
Für das Zusammensetzen von Dateiname gibt es die pathlib.
Damit das HTML formell richtiger ist sollte `<!DOCTYPE html>` in die erste Zeile.
Gruß, noisefloor
na ja, ein iPad ist generell nicht die ideale Umgebung zum Entwickeln - eben wegen der Einschränkungen, was Zugriffe auf Verzeichnisse etc angeht.
Plus du bist ja auch limitiert, was das nachinstallieren von Modulen angeht.
Zum Code:
Strings setzt man nicht mit + zusammen, dafür gibt es ab Python 3.6 f-Strings oder alternativ die format-Methode von Strings.
Zum Öffen von Dateien nutzt man besser das `with` Statement, dann kümmert sich Python um da Schließen der Datei.
Für das Zusammensetzen von Dateiname gibt es die pathlib.
Damit das HTML formell richtiger ist sollte `<!DOCTYPE html>` in die erste Zeile.
Gruß, noisefloor
Danke ich Versuch es mal auch wenn ich nur 20% davon verstanden habenoisefloor hat geschrieben: ↑Donnerstag 9. Dezember 2021, 14:03 Hallo,
na ja, ein iPad ist generell nicht die ideale Umgebung zum Entwickeln - eben wegen der Einschränkungen, was Zugriffe auf Verzeichnisse etc angeht.
Plus du bist ja auch limitiert, was das nachinstallieren von Modulen angeht.
Zum Code:
Strings setzt man nicht mit + zusammen, dafür gibt es ab Python 3.6 f-Strings oder alternativ die format-Methode von Strings.
Zum Öffen von Dateien nutzt man besser das `with` Statement, dann kümmert sich Python um da Schließen der Datei.
Für das Zusammensetzen von Dateiname gibt es die pathlib.
Damit das HTML formell richtiger ist sollte `<!DOCTYPE html>` in die erste Zeile.
Gruß, noisefloor
Ja ich brauch das IPad eher für das restliche Studium ich hab nun mal 1 Semester Bauinformatik und da muss ich auch durch
Ich danke dir trotzdem
Gruß Sülo
Warum bindest Du `name` and `name1`? Was ist der Sinn dahinter und was ist die Bedeutung der 1?
HTLM stückelt man nicht mit + zusammen und benutzt auch keine f-Strings, sondern eine passende Template-Engine, die auch dafür sorgt, dass Sonderzeichen in `name` oder `description` auch richtig codiert werden.
Beim Lesen und Schreiben von Text-Dateien sollte man immer das richtige Encoding angeben.
HTLM stückelt man nicht mit + zusammen und benutzt auch keine f-Strings, sondern eine passende Template-Engine, die auch dafür sorgt, dass Sonderzeichen in `name` oder `description` auch richtig codiert werden.
Beim Lesen und Schreiben von Text-Dateien sollte man immer das richtige Encoding angeben.
Okey das mit dem Namen hab ich geändert also ich bin absoluter beginner was das Codieren betrifft daher sagt mir Template-Engine nichtsSirius3 hat geschrieben: ↑Donnerstag 9. Dezember 2021, 14:56 Warum bindest Du `name` and `name1`? Was ist der Sinn dahinter und was ist die Bedeutung der 1?
HTLM stückelt man nicht mit + zusammen und benutzt auch keine f-Strings, sondern eine passende Template-Engine, die auch dafür sorgt, dass Sonderzeichen in `name` oder `description` auch richtig codiert werden.
Beim Lesen und Schreiben von Text-Dateien sollte man immer das richtige Encoding angeben.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Deswegen hat dir Sirius3 netterweise Begriffe genannt, nach denn du googlen kannst: https://www.google.com/search?q=python+html+template+engine
In specifications, Murphy's Law supersedes Ohm's.
- __blackjack__
- User
- Beiträge: 13080
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
`Path`-Objekte haben da netterweise gleich Methoden um komplette Textdateien zu lesen und zu schreiben, so dass man sich mit dem öffnen und schliessen der Datei gar nicht mehr selbst beschäftigen muss.
<center> ist seit HTML 4 „deprecated“ und sollte dementsprechend nicht mehr verwendet werden. Bei so einem kleinen HTML-Schnippsel kann man das Zentrieren als "style"-Attribut setzen. Bei einer umfangreicheren Seite würde man das als CSS für <h1> mitgeben oder gegebenfalls noch eine Klasse dafür definieren.
Ergänzend zur Anmerkung von Sirius3 bezüglich der Kodierung: Die muss auch im HTML selbst angegeben werden. Man kann die Angabe in HTML 5 auch weglassen, aber dann fängt der Browser an zu raten und das kann schief gehen.
Ungetestet:
<center> ist seit HTML 4 „deprecated“ und sollte dementsprechend nicht mehr verwendet werden. Bei so einem kleinen HTML-Schnippsel kann man das Zentrieren als "style"-Attribut setzen. Bei einer umfangreicheren Seite würde man das als CSS für <h1> mitgeben oder gegebenfalls noch eine Klasse dafür definieren.
Ergänzend zur Anmerkung von Sirius3 bezüglich der Kodierung: Die muss auch im HTML selbst angegeben werden. Man kann die Angabe in HTML 5 auch weglassen, aber dann fängt der Browser an zu raten und das kann schief gehen.
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
import html
from pathlib import Path
ENCODING = "UTF-8"
TEMPLATE = """\
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="{encoding}">
<title>My Personal Web Page</title>
</head>
<body>
<h1 style="text-align: center;">{name}</h1>
<hr>
{description}
<hr>
</body>
</html>
"""
def main():
name = input("Geben Sie bitte Ihren Namen ein: ")
try:
description = (
Path(name).with_suffix(".txt").read_text(encoding=ENCODING)
)
except FileNotFoundError:
description = "No description."
Path("homepage.html").write_text(
TEMPLATE.format(
description=html.escape(description),
encoding=ENCODING,
name=html.escape(name),
),
encoding=ENCODING,
)
if __name__ == "__main__":
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Ich hab das mal kopiert und versucht leider passiert da nichts außer das er nach dem Namen fragt…die Aufgabenstellung ist halt das wir eine .txt Datei erstellen sollen mit paar Informationen über uns und dann soll daseine Homepage gemacht werden….ich verstehe es einfach nicht Ist ja auch egal ich danke trotzdem für die Hilfe__blackjack__ hat geschrieben: ↑Donnerstag 9. Dezember 2021, 16:46 `Path`-Objekte haben da netterweise gleich Methoden um komplette Textdateien zu lesen und zu schreiben, so dass man sich mit dem öffnen und schliessen der Datei gar nicht mehr selbst beschäftigen muss.
<center> ist seit HTML 4 „deprecated“ und sollte dementsprechend nicht mehr verwendet werden. Bei so einem kleinen HTML-Schnippsel kann man das Zentrieren als "style"-Attribut setzen. Bei einer umfangreicheren Seite würde man das als CSS für <h1> mitgeben oder gegebenfalls noch eine Klasse dafür definieren.
Ergänzend zur Anmerkung von Sirius3 bezüglich der Kodierung: Die muss auch im HTML selbst angegeben werden. Man kann die Angabe in HTML 5 auch weglassen, aber dann fängt der Browser an zu raten und das kann schief gehen.
Ungetestet:Code: Alles auswählen
#!/usr/bin/env python3 import html from pathlib import Path ENCODING = "UTF-8" TEMPLATE = """\ <!DOCTYPE html> <html lang="en"> <head> <meta charset="{encoding}"> <title>My Personal Web Page</title> </head> <body> <h1 style="text-align: center;">{name}</h1> <hr> {description} <hr> </body> </html> """ def main(): name = input("Geben Sie bitte Ihren Namen ein: ") try: description = ( Path(name).with_suffix(".txt").read_text(encoding=ENCODING) ) except FileNotFoundError: description = "No description." Path("homepage.html").write_text( TEMPLATE.format( description=html.escape(description), encoding=ENCODING, name=html.escape(name), ), encoding=ENCODING, ) if __name__ == "__main__": main()
Wo soll sich die denn öffnen?
Und mit welchem Befehl im Code soll das passieren?
So wie ich den Code lese ist die Abfrage der Eingabe das Einzige, was an Interaktion passiert. Ob da eine Datei gelesen oder geschrieben wird, wirst du optisch wohl nicht mitkriegen.
Und mit welchem Befehl im Code soll das passieren?
So wie ich den Code lese ist die Abfrage der Eingabe das Einzige, was an Interaktion passiert. Ob da eine Datei gelesen oder geschrieben wird, wirst du optisch wohl nicht mitkriegen.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
meinst du, dass `open` die Datei öffnet? Ja, macht der Befehl auch, aber halt auf Betriebssystemebene, die Datei wird zum Lesen durch ein Programm - in dem Fall dein Python-Skript - geöffnet und das hat Zugriff auf Inhalt in Form eines Stroms von Bytes.
`open` hat nichts damit zu tun, dass sich die Datei in irgendeinem Editor für dich lesbar öffnet.
Wie viel Python kannst du eigentlich bzw. wie viel hast du in der Uni schon gelernt? Es macht für dich ggf. Sinn, mal das Python-Tutorial auf docs.pyhton.org durchzuarbeiten.
Gruß, noisefloor
meinst du, dass `open` die Datei öffnet? Ja, macht der Befehl auch, aber halt auf Betriebssystemebene, die Datei wird zum Lesen durch ein Programm - in dem Fall dein Python-Skript - geöffnet und das hat Zugriff auf Inhalt in Form eines Stroms von Bytes.
`open` hat nichts damit zu tun, dass sich die Datei in irgendeinem Editor für dich lesbar öffnet.
Wie viel Python kannst du eigentlich bzw. wie viel hast du in der Uni schon gelernt? Es macht für dich ggf. Sinn, mal das Python-Tutorial auf docs.pyhton.org durchzuarbeiten.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 13080
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Vielleicht wäre auch die tatsächliche Aufgabenstellung samt Kontext interessant. Am Ende soll das „eine Homepage erstellen“ vielleicht auch was mit Bottle/Flask/Django/… sein.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Editor öffnen ist halt auch super plattformabhängig. Das läuft auf dem iPad anders als unter Windows (oder Linux). Man kann sich da halbwegs mit den systemspezifischen Openern behelfen, z.B. mit der os.startfile Funktion unter Windows sowie xdg-open unter einigen Linux-Systemen bzw das open Kommando für OS X. Vielleicht gibt es inzwischen da schon was Fertiges, das dir die Unterscheidung im Code abnimmt. Aber ist das tatsächlich Teil der Aufgabenstellung oder soll es als Hilfe für dich dienen?
Sorry das ich mich jetzt erst melde das lag alles am blöden iPad.
Auf dem PC hat es dann später funktioniert!