Seite 1 von 1

ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 19:53
von DrW3sk3r
Hallo erst mal ^^
Ich bräuchte Hilfe bei einen Script und zwar soll das Script einen ordner erstellen der nicht als root gekennzeichnet wird und in den ordner soll eine datei erstellt werden, wo der dateiname per raw_input eingegeben werden kann . Bei raw_input soll man die Url eingeben z.b. http://meineseite.de und der soll mir
den Seitenquelltext in die Textdatei schreiben .Die Textdatei soll als Namen die eingegebene Url haben.

(Ist ein Schulprojekt im fach Informatik)

Code: Alles auswählen

#!/usr/bin/env python
# coding:utf-8
import urllib
import urllib2
import os
print "Example http://site.com"
a = raw_input("Enter Url: ")
url = a
try:
	content = urllib.urlopen(url).read()
except:
	content = urllib2.urlopen(url).read()
print content
if os.path.exists("output"):
	print ""
else:
	os.makedirs("output")
open(r"output\" + url + ".txt", "a") 
pfad = "output/" + url + ".txt")
f=open(pfad,'w')
f.writelines(content)
f.close 
print "ready"
Könnte mir jemand helfen , Danke im vorraus

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:02
von xeike
Kennst du schon

Code: Alles auswählen

os.path.join()
und möchtest du wirklich deine Datei

Code: Alles auswählen

output/http://www.site.com.txt
nennen?



Xe

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:05
von DrW3sk3r
Das mit den Site.com ist einfach nur einbeispiel damit man weist das www.das script nicht ausführt.
^^
joa die datei sollte schon die url beinhalten ^^

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:09
von Hyperion
Hallo und Willkommen im Forum!

Hast Du den angepinnten Thread schon gesehen und ggf. (den Anfang) durchgelesen? Wir helfen gerne bei der Bewältigung von Problemen - kauen Dir aber keine Lösung vor!

Was ist denn Deine konkrete Frage?

Code: Alles auswählen

try:
        content = urllib.urlopen(url).read()
except:
        content = urllib2.urlopen(url).read()
Das sieht schon mal komisch aus! Was willst Du damit bewirken?

Mal allgemeine Anmerkungen:

Dateien sollte man mittels ``with`` öffnen:

Code: Alles auswählen

with open(...) as handle:
    # handle ist hier Dein File-Objekt und muss *nicht* mehr explizit 
    # per ``handle.close()`` geschlossen werden

Code: Alles auswählen

a = raw_input("Enter Url: ")
url = a
Das ist ziemlich umständlich! Wieso muss die Eingabe erst an ``a`` und *sofort* danach an einen anderen (besseren!) Namen gebunden werden? Das kannst Du doch sofort erledigen...

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:25
von DrW3sk3r
meine konkrete frage ist:
1. wie erstelle ich einen ordner auf dem man nicht mit nautilus zugreifen muss
2. wie erstelle ich eine datei in diesen ordner
3. wie bekomme ich den ganzen inhalt der seite in die datei ohne das dieser in eine zeile gequescht wird

MFG DrW3sk3r

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:32
von xeike
DrW3sk3r hat geschrieben:meine konkrete frage ist:
1. wie erstelle ich einen ordner auf dem man nicht mit nautilus zugreifen muss
os.mkdir()
2. wie erstelle ich eine datei in diesen ordner
os.path.join(), open()

3. wie bekomme ich den ganzen inhalt der seite in die datei ohne das dieser in eine zeile gequescht wird
url.readline()
f.write()


Xe.

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:35
von DrW3sk3r
das mit dein ordner zugriff habe ich hinbekommen ich habe dort einfach die befehle genommen:

Code: Alles auswählen

if os.path.exists("output"):
	usrname = raw_input("Your username")
	os.system('chown '+ usrname +' output')
	print ""
else:
	os.system('mkdir output')
	usrname = raw_input("Your username")
	os.system('chown '+ usrname +' output')

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:44
von xeike
DrW3sk3r hat geschrieben:das mit dein ordner zugriff habe ich hinbekommen ich habe dort einfach die befehle genommen
Wenn du das eh mit Shellbefehlen machst, dann nimm doch auch für die if/else Shellbefehle und baue dir ein passendes Skript drumherum:

Code: Alles auswählen

if [ -e mein_verzeichnis ]  ; then  echo "existiert" ; fi
und so weiter.

Xe

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 20:58
von DrW3sk3r
das ist ne gute idee ich werde das mal testen ^^ danke

aber ich habe ein problem ich bekomme es nicht hin, das die erstellte datei als namen die url trägt
würde dieser code überhaupt funktionieren?

Code: Alles auswählen

f = file('output/'+ url +.txt', 'w')
weil das mit dem with open(...) as handler habe ich versucht und die console warf mir ein fatalen error raus

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:03
von DrW3sk3r
Ihr seit echt hilfreich muss ich mal los werden :D (lob)

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:03
von xeike
DrW3sk3r hat geschrieben:das ist ne gute idee ich werde das mal testen ^^ danke
Wenn du schon bei Shellskripten bist, dann schau dir mal den Befehl "wget" an. Der macht ungefähr das, was du gerade programmieren möchtest.

Sieh dir dann noch einmal die Python-Funktionen 'os.path.join()' und 'with open() as name' an. Die sind hier im Forum sehr beliebt. :wink:

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:05
von BlackJack
@DrW3sk3r: Du hast ja offensichtlich schon das `os`-Modul gefunden. Nun vergiss doch bitte mal `os.system()` und damit eine unsichere und sehr fehleranfällige Art externe Programme auszuführen, und benutze die Funktionen in diesem Modul um Verzeichnisse zu erstellen und den Besitzer des Verzeichnisses zu ändern. Der Funktionsname zum erstellen von Verzeichnissen wurde Dir doch sogar schon genannt. Es sollte auch nicht so schwer sein die Funktion zum ändern des Besitzers zu finden. Das Muster ist offensichtlich, würde ich mal behaupten.

Statt `usrname` könntest Du auch `user_name` schreiben. Ist ja nicht so als wenn Buchstaben knapp wären oder es für eingesparte Vokale Treuepunkte gäbe. Namen sollten dem Leser verraten was der Wert dahinter im Kontext des Programms bedeutet. Sie sollen den Leser nicht zum rätselraten zwingen. Also verbieten sich irgendwelche Auslassungen und kryptischen Abkürzungen. Allgemein bekannte Abkürzungen wie `url` sind in Ordnung.

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:09
von DrW3sk3r
habs hinbekommen ist zwar jetzt mit vielen eingaben verbunden aber hey es klappt

Code: Alles auswählen

#!/usr/bin/env python
# coding:utf-8
import urllib
import urllib2
import os
print "Example http://site.com"
a = raw_input("Enter Url: ")
url = a
try:
	content = urllib.urlopen(url).read()
except:
	content = urllib2.urlopen(url).read()
print content
if os.path.exists("output"):
	usrname = raw_input("Your username: ")
	os.system('chown '+ usrname +' output')
	print ""
else:
	os.system('mkdir output')
	usrname = raw_input("Your username")
	os.system('chown '+ usrname +' output')
os.path.join("output")
pagename = raw_input("Name your file: ")
f = file('output/'+ pagename + '.txt', 'w')
f.write(content)
f.close()
os.system('chown '+ usrname + " " +"output/" + pagename + ".txt")
Wenn es verbesserungs Vorschläge gibt oder feedback freue ich mich immer ^^

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:13
von xeike
DrW3sk3r hat geschrieben:Wenn es verbesserungs Vorschläge gibt oder feedback freue ich mich immer ^^
Gerne. :D

Versuche mal BlackJacks Vorschläge umzusetzen und schmeisse alle os.system()-Aufrufe weg.

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:14
von DrW3sk3r
@xeike
genau sowas ähnliches sollten wir auch schreiben aber auf seiten fixiert warum keine ahnung
danke ^^
@BlackJack
ich weiss es wäre besser aber ich so gut klar mit ^^ aber trotzdem danke ich werde das beim nächsten mal versuchen ^^ bzw. machen ^^

Re: ich bruache hilfe bei dateiscript

Verfasst: Dienstag 16. April 2013, 21:20
von DrW3sk3r
amit könnten wir diesen thread abschließen

Re: ich bruache hilfe bei dateiscript

Verfasst: Mittwoch 17. April 2013, 22:19
von Hyperion
DrW3sk3r hat geschrieben:amit könnten wir diesen thread abschließen
Oder aber Du versuchst mal BlackJacks Ratschläge umzusetzen und vergisst am besten sofort, dass es ``os.system`` gibt :!: (Wir schließen hier übrigens keine Threads "ab"; das Thema bleibt grundsätzlich offen)

Darüber hinaus sind da zig Dinge drin, die mindestens umständlich sind. Vor allem viel Copy-and-Paste-Programmierung. Auch zum Thema Öffnen von Dateien habe ich ja etwas geschrieben. Genau genommen hast Du nichts von meinen Punkten umgesetzt oder deswegen noch mal nachgefragt. Ganz präzise sogar keinen Hinweis von irgend jemandem...

Dein Script wie es jetzt aussieht ist imho schlecht in so ziemlich jeglicher Kategorie! Ok, Du bist ein Anfänger, da kann man nix tolles aus dem Hut zaubern, aber dass Du wenig bis nichts von Hinweisen hier umsetzt, zeugt nicht gerade von Lernbereitschaft. Naja, wenn's auch so für ne zufrieden stellende Note reicht... :twisted: