subprocess.run popen Python3.5

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
funkenflug
User
Beiträge: 4
Registriert: Dienstag 22. März 2016, 17:36

Hallo Mitglieder,
ich komme aus der BASIC Welt und habe den Umstieg auf VBnet nicht mehr weiter verfolgt --> Hatte irgendwann die Lust verloren.
Nun wollte ich ( nach 6 Jahren ) mal wieder etwas machen und habe ich mich für Python 3 entschieden da es naja plattformübergreifend und mit tk lizenzfrei zu nutzten ist.
Ich habe mir Bücher besorgt und ewas eingelesen um mich damit zu beschäftigen.
(ist noch alles ganz ganz neu für mich, 5Tage)


Nun ja jetzt habe ich ein kleines Problem, ich hoffe Ihr könnt mir helfen!

Problem:

Ich habe hier ein Webgerät (youless.nl) das Daten zum abrufen bereithält.
Man muss auf der Weboberfläche ein passwort eingeben und dann kann ich via URL die Daten abrufen (über cookie ist die session offen).
hierzu nutze ich " curl.exe ", das klappt auch ich logge ein und speichere den cookie mit einem 2. Aufruf hohle ich die Daten in eine Datei.

anschließend möchte ich diese Datei weiterverarbeiten!

Derzeit verwende ich -->
"subprocess.run/popen "
zum Aufruf der curl.exe aus Python heraus!

Das untere Script klappt auch soweit jedoch kommt beim aufruf --> kurz das Dosfenster vom curl hoch (ca. 200ms) <--
--> Wie kann ich das unterbinden ? Die Datei soll alle 60sekunden neu generiert werden da stöhrt das "Dosfenster" schon !!!

oder hat jemand eine alternative Idee ?

Danke im vorraus!


Ich weis schön ist anderst man sehe es mir nach !!!

#######################################
# Auslesen von youless
import subprocess

pfad="D:\\python\\url-abfragen\\" # Pfad zu exe
programm="curl.exe --silent" # Programm name
OptCookie=" -c cookiejar.txt " # Option to get cookie
OptGetDat=" -b cookiejar.txt --output stand.txt" # Option to get data with cookie
ipadresse=" http://192.168.xxx.xxx/" # ip Adress
aut="L?w=GEHEIM" # Loginstring für youless
DatAbruf="a" # Datensatz abrufen

# print("");print("pfad1:" ,pfad); print("aut1: ",aut);print("programm1: ",aut);print("")
curlLogin=pfad + programm + OptCookie + ipadresse + aut
getDaten=pfad + programm + OptGetDat + ipadresse + DatAbruf
# test="START/MIN " + pfad + "youlessabfrage.cmd"
# print("loginLine: ",curlLogin)
# print("getDatenLine: ",getDaten)

subprocess.run(curlLogin) # login
subprocess.run(getDaten) # daten in datei speichern

#################################################
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@funkenflug: statt ein externes Programm zu benutzen, kannst Du auch mit Python-Bordmitteln Daten abfragen:

Code: Alles auswählen

from http.cookiejar import CookieJar
import urllib

ipadresse = " http://192.168.xxx.xxx/"
aut="L?w=GEHEIM" # Loginstring für youless
DatAbruf="a" # Datensatz abrufen 

opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(CookieJar()))

# Logging in
req = opener.open(ipadress + aut)
print req.read()

# Read Data
req = opener.open(ipadress + DatAbruf)
data = req.read()
Noch bequemer geht's mit dem requests-Modul.
Antworten