[Python] jaka jest praktyczna strona zastosowania?
Regulamin forum
Temat prosimy poprzedzić nazwą języka umieszczonego w nawiasach kwadratowych np. [Pascal].
Temat prosimy poprzedzić nazwą języka umieszczonego w nawiasach kwadratowych np. [Pascal].
[Python] jaka jest praktyczna strona zastosowania?
Jak w temacie, ponieważ nie jestem programista ale lubię co nieco poznawać od czasu do czasu, to mam pytanie właśnie, jakie jest praktyczne na dzień dzisiejszy zastosowanie Pythona?
Re: [Python] jaka jest praktyczna strona zastosowania?
Wielki coś wspominał, że używa do testów jednostkowych (ale nie wiem czy dobrze zapamiętałem)
- mokrowski
- User
- Posty: 190
- Rejestracja: czwartek 08 paź 2015, 20:50
- Lokalizacja: Tam gdzie Centymetro
Re: [Python] jaka jest praktyczna strona zastosowania?
Witryny internetowe https://www.djangoproject.com/ , analiza danych https://www.analyticsvidhya.com/blog/20 ... scratch-2/ wraz z szybkim tworzeniem analiz i rozwiązań (ten notebook to fajne narzędzie.. ) https://jupyter.org/ kliknij sobie "Try" jeśli trochę znasz Python'a a jeśli nie to zobacz co można zrobić: http://nbviewer.jupyter.org/ , testy (Także dla embedded ... jedno z narzędzi do testowania) https://www.froglogic.com/ , wszelkiego rodzaju "kleje" w aplikacjach... do łączenia i automatyzacji modułów.
A zresztą co się będę produkował...
https://www.python.org/about/apps/
A zresztą co się będę produkował...
https://www.python.org/about/apps/
,,Myślenie nie jest łatwe, ale można się do niego przyzwyczaić" - Alan Alexander Milne: Kubuś Puchatek
Re: [Python] jaka jest praktyczna strona zastosowania?
Ja pythona używam do wszystkiego drobnego, trzeba coś zrobić jednorazowo to używam właśnie niego.
Zmajstrowałem coś takiego:
Efekt, zawartość tego pliku:
Jest to kopia czatu zapisana w pliku.
Zmajstrowałem coś takiego:
Kod: Zaznacz cały
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib, urllib2, cookielib
from HTMLParser import HTMLParser
import sys
class loginParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.sid = ""
def handle_starttag(self, tag, attrs):
if tag == 'input':
if ('name', 'sid') in attrs:
for k,v in attrs:
if k == 'value':
self.sid = v
def get_sid(self):
return self.sid
class messagesParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.automat = 0
self.headerMessage = ""
self.timeMessage = ""
self.textMessage = ""
self.data = ""
#AUTOMAT
#0 - początek
#1 - nagłówek (nick)
#2 - koniec nagłówka
#3 - czas
#4 - koniec czasu
#5 - tekst
#- - koniec tekstu, wyświetlenie, kasowanie zmiennych, powrót do 0
def get_data(self):
return self.data
def handle_starttag(self, tag, attrs):
#print "Encountered a start tag:", tag ,attrs
if tag == 'blockquote':
self.textMessage += '"'
if tag == 'div':
if ('class', 'mchat-message-header') in attrs:
self.automat = 1
if ('class', 'mchat-text') in attrs:
self.automat = 5
if tag == 'span':
if ('class', 'mchat-time') in attrs:
self.automat = 3
def handle_endtag(self, tag):
#print "Encountered an end tag :", tag
if tag == 'blockquote':
self.textMessage += '"'
if tag == 'li' and self.automat == 5:
self.automat = 0
m = self.timeMessage+"\t"+self.headerMessage+"\t"+self.textMessage
self.data += m+"\n"
self.timeMessage = ""
self.headerMessage = ""
self.textMessage = ""
if tag == 'span' and self.automat == 3:
self.automat = 4
if tag == 'a' and self.automat == 1:
self.automat = 2
def handle_data(self, data):
#print "Encountered some data :", data
if self.automat == 1:
self.headerMessage += data.strip()
if self.automat == 3:
self.timeMessage += data.strip()
if self.automat == 5:
self.textMessage += data.strip()
class client:
def __init__(self, username, password):
self.parser = loginParser()
self.redirect = 'app.php/mchat/archive'
self.action = 'http://microgeek.eu/ucp.php?mode=login'
self.action_get = 'http://microgeek.eu/app.php/mchat/archive?start='
self.cj = cookielib.CookieJar()
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
self.opener.addheaders =[('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; ' 'Windows NT 5.2; .NET CLR 1.1.4322)'))]
resp = self.opener.open(self.action)
self.parser.feed(resp.read().decode('utf-8'))
self.sid = self.parser.get_sid()
self.login_data = urllib.urlencode({'username' : username, 'password' : password, 'autologin' : 'on',
'redirect' : self.redirect, 'sid' : self.sid, 'login' : 'Zaloguj+si%C4%99'})
print("login....")
resp = self.opener.open(self.action, self.login_data)
print("done...")
self.parser.close()
def get_data(self, page):
resp = self.opener.open(self.action_get+str(page))
mparser = messagesParser()
mparser.feed(resp.read().decode('utf-8'))
d = mparser.get_data()
mparser.close()
return d
if __name__ == "__main__":
reload(sys)
sys.setdefaultencoding('utf8')
username = raw_input("login>")
password = raw_input("password>")
f = open('backupfile.txt', 'w')
e = client(username, password)
for i in xrange(6361,0,-1):
f.write(e.get_data(50*i))
print i
f.close()
Efekt, zawartość tego pliku:
Jest to kopia czatu zapisana w pliku.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Gott weiß ich will kein Engel sein.
Re: [Python] jaka jest praktyczna strona zastosowania?
PROTON pisze:Ja pythona używam do wszystkiego drobnego, trzeba coś zrobić jednorazowo
no dokładnie tak, ale też do automatyzacji swojej programistycznej codzienności, bo ja z tych nieco leniwych - preparowanie danych w db do testów jednostkowych, sekwencyjne uruchamianie skryptów i wstępna analiza wyników, ot takie...
a pokaz prawdziwej siły Pythona to jest pakiet SB-Assembler, wspominałam już o tym narzędziu drzewiej viewtopic.php?f=65&t=845" target="_blank
Małolata moja sobie w tym Minecraftowe konstrukcje robi, to jeden z tutoriali, jakie pracowicie przerabiałyśmy http://www.instructables.com/id/Python- ... Minecraft/ murek czy ścianę na 1 tyś bloczków w górę i w bok robi się jednym poleceniem konsoli
poza tym interpreter Python jest dość łatwy do wbudowania we własny sofcik https://micropython.org/ a to daje ogromne możliwości
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: [Python] jaka jest praktyczna strona zastosowania?
Dodam praktyczny przykład, kod znaleziony w sieci i dostosowany do moich potrzeb, jest to balancer logów syslog-a, z jednego źródła mamy dużo logów i parsery SIEM-a nie są w stanie wszystkich obsłużyć. Rozwiązaniem tego problemu było uruchomienie 2 instancji parserów na porcie 515 i 516 oraz balancera w Pythonie na porcie 514.
Kod: Zaznacz cały
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import SocketServer
import socket
HOST, PORT = "0.0.0.0", 514
filterList = ['debian', 'debianx',]
class psyslog_client:
"""Class UDP
h - host (default localhost)
p - port (default 514)
"""
HOST = "127.0.0.1"
PORT = 514
def __init__(self, h=HOST, p=PORT):
self.HOST = h
self.PORT = p
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def send(self, message):
self.sock.sendto(message, (self.HOST, self.PORT))
class SyslogUDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = bytes.decode(self.request[0].strip())
socket = self.request[1]
print( "%s : " % self.client_address[0], str(data))
#balancing
if data.split(' ')[3] in filterList:
s1.send(data)
else:
s2.send(data)
if __name__ == "__main__":
s1 = psyslog_client("127.0.0.1",515)
s2 = psyslog_client("127.0.0.1",516)
try:
server = SocketServer.UDPServer((HOST,PORT), SyslogUDPHandler)
server.serve_forever(poll_interval=0.5)
except (IOError, SystemExit):
raise
except KeyboardInterrupt:
print ("Crtl+C Pressed. Shutting down.")
Gott weiß ich will kein Engel sein.
Re: [Python] jaka jest praktyczna strona zastosowania?
Tak wróciłem do starego tematu i jeszcze raz przeczytałem, dziękuję za wszystkie odpowiedzi ale taka moja mała sugestia dla odpowiadających na tego typu proste i podstawowe pytania, pytający niekoniecznie jest na poziomie programistów wymiataczy (a jak jeszcze to na wstępie zaznacza), a wy odpowiadając może czasami mimowolnie używacie języka dla was w pełni zrozumiałego ale niekoniecznie jest tak w przypadku pytającego .
no i wszystko jasne
PROTON pisze:.... jest to balancer logów syslog-a, z jednego źródła mamy dużo logów i parsery SIEM-a nie są w stanie wszystkich obsłużyć. Rozwiązaniem tego problemu było uruchomienie 2 instancji parserów na porcie 515 i 516 oraz balancera w Pythonie na porcie 514.....
no i wszystko jasne
- inż.wielki
- User
- Posty: 307
- Rejestracja: niedziela 20 gru 2015, 23:11
Re: [Python] jaka jest praktyczna strona zastosowania?
Ja go używam do tego jeżeli muszę zrobić coś co można zautomatyzować. Dzięki pythonowi można nawet otwierać wirtualne przeglądarki i wypełniać strony, przydatne gdy np mamy 200-300 urządzeń i każde z nich należy zserializować a potem wpisać odpowiednie parametry na stronę www w/w urządzenia
Wróć do „Inne języki programowania”
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości