Skip to content

alnao/PythonExamples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Examples

Esempi Python by AlNao.it

AWS

  • Prerequisito: utenza AWS e installazione della AWS-CLI, vedere il sito ufficiale, per la configurazione eseguire comando aws configure.
  • CDK: Per la libreria CDK, installare della libreria, vedere il sito ufficiale eseguire il comando npm install -g aws-cdk. Per ogni progetto c'è un README dedicato:
    • 01 bucketS3: creazione di un bucket
    • 02 EC2: creazione di una istanza EC2
    • 03 website S3: creazione di una sito web esposto con S3
    • 04 cloud front: creazione di una distribuzione con CloudFront, vedere repository aws-samples
    • 05 lambda function: creazione di una funzione lambda function, vedere repository aws-samples
    • 06 event bridge: creazione di una regola EventBridge, vedere repository aws-samples
    • 07 step function: creazione di una step function con due lambda, vedere repository aws-samples
    • 08 api gateway: api gateway con esposizione di una risorsa REST
    • 09 dynamo api crud: creazione di una tabella dynamo con api gateway e lambda come crud
    • 10 lambda auth: creazione di una API REST con lambda authorizer per la validazione di Token JWT
    • 13 glue job: creazione di un job glue per leggere un file e modificarne il contenuto
    • 15 SQS: creazione di una coda SQS, un API con un metodo producer e un metodo consumer
    • 16 SNS: creazione di un sistema SNS con una lambda che scoda le notifiche
    • 18 EFS: creazione di un disco EFS montato da una EC2 che espone un server apache
    • 20 ASG e ALB: creazione di un AutoScaling group e Application Load Balancer con EC2 che eseguono un webserver apache senza disco condiviso
  • ManagerTk: Applicazione sviluppata con la libreria tkinter (menu, gestione finestre ed elenchi) per gestire i servizi AWS usando le librerie SDK
  • ManagerFlask: Applicazione web sviluppata con Flask per gestire i servizi AWS usando le librerie SDK
    • ManagerFlaskCloudWatch: Applicazione web sviluppata con Flask per la gestione di CloudWatch Alarms & CloudWatch
  • PanoramicResources: Applicazione dashboard semplice per visualizzare le risorse AWS
  • SDK: Per la libreria SDK, l'installazione e la configurazione vedere il sito ufficiale e il comando pip install boto3. Classi per la gestione dei servizi: profiles, SSM parameter, Bucket S3, Ec2, CloudFront, Lambda, Event bridge, Step function, Dynamo, RDS e tanti altri.
  • Services
    • CodeWhisperer
      • 01 basic: semplice esempio usato come prima prova
    • Glue
      • 01 console: Semplice esempio creato da console manualmente che elabora un file csv con una struttura ben definita.
      • 02 sqlServer e example03sqlServerWithRunSql: Esempio creato per importare in database RDS SqlServer il contenuto di un file CSV (funziona anche con file di grandi dimensioni a differenze di una lambda che andrebbe in errore per timeout)
    • Lambda: vari esempi di lambda scritte in python con sls da installare con il comando npm install -g serverless, vedere il sito ufficiale di serverless e il gestore npm
    • Polly: text to speech, esempio preso dalla documentazione ufficiale
    • S3: piccola applicazione scritta con boto3-sdk per la gestione dei bucket S3 di un account

Data Scientist

Django

  • PythonDjango1example
  • PythonDjango2news
  • PythonDjango3forms
  • PythonDjango4forms

Docker

  • 01 simple Pandas: see run a python code on aws batch
  • 02 Flask Login: esempio di docker con dentro una piccola applicazione web creata con Flask e db (sqlite),
  • 03 Api Persone NODB: applicazione per l'esposizione di API, non previsto DB e non previsto sistema di concorrenza: al riavvio si perde tutto
  • 04 Flask login Ldap: piccola applicazione Flask con la gestione delle credenziali tramite un server AD e protocollo LDAP
  • 05 Flask login Saml2-SSO: piccola applicazione Flask con la gestione delle credenziali tramite un server AD e protocollo Saml2-SSO
  • 06 TraslatorSubtitle: applicazione per tradurre file subtitle in formato srt, see video
  • 07 DockerCompose API: applicazione con api-rest che legge e scrive dati su un database, app e database sono creati assieme con un docker-compose
  • 08 Crud MySql Minikubernetes: applicazione con api-rest che legge e scrive dati su database mysql, creati con Kubernetes funzionante su Minikube
  • 09 AWS Dynamo: applicazione che crea una tabella dynamo, un CRUD con fast-api e un piccolo frontend per visualizzare i dati
  • 10 Robot Framework: applicazione che esegue un test-unit con RobotFramework di una bellissima infrastruttura con DynamoDb, Kafka, consumer e un frontend.
  • 11 llamaAIRaspberry3: immagine per eseguire una IA con motore Llama in un docker, può essere eseguita su PC o su Rasbperry3b
  • 12 KubernetesScaling: immagine per eseguire lo scaling con kubernetes utilizzando la funzionalità Horizontal Pod Autoscalers di K8S
    • l'immagine permette di mandare la CPU a valori alti con chiamate post
    • sotto-cartella con un esempio funzionante con Prometheus che utilizza una custum-metrics "numero task" e Grafana per il monitoraggio
    • sotto-cartella con tre esempi funzionanti con CRD e librerie operator per la gestione dello scaling.

From Others Sites

Manage File

  • CheckASCII: script che verifica se in un file di testo ci sono carateri non AsciiUtf8
  • Csv2fixedWidthFile: esempio di script py che prende un file csv e lo trasforma in un file txt posizionale
    • tracciato.csv necessario con i campi del file posizionale con le informazioni: nome, tipo, lunghezza, valore e descrizione
    • input.csv file di input coni campi
    • l'ouput viene scritto in un file OUT.txt
  • Marge2txtFile: esempio di script py che esegue marge di due file
    • un file di testo txt (chiamato BAN) e un file csv (chiamato rapporti)
    • genera un file di testotxt (chiamato OUT.txt) e un file csv di report con quali righe sono state modificate (OUT.log)
  • Sftp & ssh: metodi per la gestione di un server sftp (invio e ricezione dati), esecuzione comando in remoto con ssh
  • UnzipFile: esempio che usa "zipfile" di Py per estrarre il contenuto di un pacchetto zip
  • UploadFileToRestAPI: esempio per l'invio di un file locale ad una API Rest
  • VideoConcat ffmpeg: script per eseguire il concat di più video usando ffmpeg (solo su GNU Linux)

RobotFramework

  • 01 Simple: robot che esegue test sulla login su una applicazioni di esempio
  • 02 Database: robot che esegue query CRUD su un Database Mysql

Simple

  • gui: esempi vari di librerie GUI per Python
  • mongo: script per la gestione di una base dati NoSql Mongo
  • rabbitMq: script la gestione di una coda RabbitMq
  • classes.py: Esempio di classe Python
  • conto1.py: Esercitazione classe ContoCorrente, inizializzatore con 3 parametri (nome titolare, numero conto e saldo) con tre attributi (nome, conto e saldo)
  • conto2.py: Esercitazione classe ContoCorrente, prendere spunto dal conto1.py ma nascondere il saldo come proprietà semplice con una property ''privata'' ,
  • conto3.py: Esercitazione classe Conto come padre di ContoCorrente, in conto ci devono essere nome e numero conto
  • conto4.py: Esercitazione classe Gestore Conto corrente, crea metodo bonifico per prelevare da un conto e fare un deposito ad un altro
  • exception.py: Esempi di exception in Python
  • lambda.py: esempi di lambda in Python
  • modules.py: Esempi di modulo in Python
  • scriptWithModules.py: Eempi di script che importa un modulo (modules.py) in Python

Creazione server

Vedere la documentazione ufficiale o pagine di esempio. Per lanciare il server, il comando è

python -m http.server 8080

e poi il server è pronto alla pagina http://localhost:8080/.

pyinstaller

Come crare i file eseguibile da un python con pyinstaller, vedi documentazione ufficiale e video. Guida all'installazione e comando

pip install pyinstaller 

Per poi creare il file eseguibile dentro alla cartella dist del progetto:

pyinstaller file.py --onefile
pyinstaller ManagerTk.py --onefile  --hidden-import=Services --hidden-import=Services.services
pyinstaller --hidden-import=Services --hidden-import=Services.services  -F ManagerTk.py

Appunti vari

In questa sezione appunti vari presi nel tempo

  • corso base base https://www.youtube.com/watch?v=XHzDHJ-BgvU

  • main # https://www.youtube.com/watch?v=NB5LGzmSiCs

    if __name__ == '__main__':
     	print("SI")
    
  • main e recuperare un file dalla stessa cartella dove è presente il file main

    import os
    if __name__ == '__main__':
      # Ottiene il percorso della directory dove si trova lo script
      current_dir = os.path.dirname(os.path.abspath(__file__))
      file_path = os.path.join(current_dir, 'file.txt')
    
  • Tipizzare e annotation https://www.youtube.com/watch?v=Y9fT4HVdCuQ

    def get_data() -> dict[str,int]:
      return {'bob':1,'james':2}
    
  • Gestione classi ed ereditarietà

    class Fluit:
      def __init__(self,name,color):
        self.name=name
        self.color=color
      def detail(self):
        print ("my "+self.name +" is " + self.color) 
    my_apple = Fuit("apple","red")
    my_apple.detail()
    class Banana(Fuit):
      def __init__(self):
        super().__init__("banana","yellow")
        self.__cost=50 ##__cost is private
    my_b=Banana()
    # my_B.__cost #error !
    print ( my_B,_Banana__cost ) #works! private? no!
    
  • Ordinare una lista di oggetti secondo un campo self.list = sorted( self.list , key=lambda tup: tup["campo"] , reverse=False )

  • Funzioni lambda

      f = lambda a : a*a
    
  • functioni con return multiplo

      def func():
      	return 1,'alberto, True
      a,b,c=func()
      print( funct() )
    
  • funzioni inline

      lista=[ e['Name'] for e in self.lista_bucket ]
      lista=[ e["Key"] if "Key" in e else e["Prefix"] for e in self.lista_files_bucket ]
    
  • stringhe z=5

      s= f"Il quadrato di {z} è {z * z}"		len(s) 		s[3;6]  s[-2]
      s.startsWith("Il") s.endsWith("25"") s.isalnum() s.isdecimal() 
      da_fare=", ".join(lista ["pane","latte","melone" ] ) lista=da_fare.split(", ")
      print(f'{s:#<20})
    
  • cicli

      for i in range(100)
      	print("sorry")
    
  • Dizionari https://www.youtube.com/watch?v=l0DDw4nzS_k

      ita_eng={"Ciao":"Hello","Uova":"Eggs"}		ita_eng.keys()  	.values()
      ita_eng.get("gatto","Chiave non trovata")
      ita_eng.setdefault("Birra","Beer") aggiunge valore se non presente
    
  • Gestione date

    from datetime import datetime, timedelta
    'createdAt': str (datetime.now() ) 
    yesterday = datetime.today() - timedelta(days = 1 )
    str_yesterday = yesterday.strftime("%Y%m%d")
    
    #convertire TS javascript a umano
    str_date=str(datetime.fromtimestamp( key['creationTime'] /1000 ) )
    
    #Recupero data in specifico formato
    from datetime import datetime 
    datetime.today().strftime('%Y%m%d %H%M%S')
    
  • random

      import random
      import string
      base=["A","T","C","G"]
      s=rand.choises(baes, k=10) #k=numero di valori
      pwd="".join( random.choises(spring.printable,k=8) )
    
  • json2csv # pip install pandas

      import pandas as pd
      pdObj = pd.read_json('20220824101456_SUPERB_ADV.json')
      print(type(pdObj))
      pdObj.to_csv('20220824101456_SUPERB_ADV.csv',sep=';',index=False)
    
  • jwt

      import jwt
      key = "dancingPotatoes_!"
      auth = 'Deny'
      code = event['authorizationToken']
      # Decode JSON Web Token
      try:
          jwt.decode(code, key, algorithms="HS256")
          auth = 'Allow'
          logger.info('Valid key. Authorised User...')
      except:
          auth ='Deny'
          logger.info('Invalid key. Unauthorised User...')
    
  • glob: libreria per file ma NON Usa reg-expression ma shell expression

      import glob
      print ( glob.glob ( '?pple.jpg' ))
      print ( glob.glob ( '*.jsp' ))
      print ( glob.glob ( '[ab]*.jpg' )) #a oppure b
      print ( glob.glob ( '[!z]*.jpg' )) #non inizia per z
      globs = glob.glob ( '**/*.jsp', root_dir='/.../' , recursive=True, include_hidden=True) #parametri vari
      print ( globs.__next__() )
      for i, file in enumerate (globs, 1):
      	print (i, files, sep=": )
    
  • py to exe https://www.youtube.com/watch?v=Y0HN9tdLuJo

      pip install auto-py-to-exe
    
  • pandas to dictionary

      import pandas as pd 
      #df.to_dict: Turn a DataFrame into a Dictionary
      print ("---- DataFrame into Dictionary ---- ")
      df = pd.DataFrame({"fruits": ["apple", "orange", "grape"], "price": [1, 2, 3]})
      print ("---- DataFrame into Dictionary and records ---- ")
      d2=df.to_dict(orient="records")
      print (d2)
      [
      	{'fruits': 'apple', 'price': 1}, 
      	{'fruits': 'orange', 'price': 2}, 
      	{'fruits': 'grape', 'price': 3}
      ]
    
  • visualizzare immagine https://stackoverflow.com/questions/54103815/opencv-4-java-highgui-imshow

  • boo https://stackoverflow.com/questions/54103815/opencv-4-java-highgui-imshow

  • funzione per pulire il csv da caratteri lowvalue (caratteri di merda nei file fucos https://stackoverflow.com/questions/7894856/line-contains-null-byte-in-csv-reader-python)

    def fix_nulls(s):
      for line in s:
          szRiga = line.replace('\0', ' ')
          szRiga = szRiga.replace('"', ' ')
          yield szRiga
    
  • list comprehension

    frutta=["mele","banana","peri"]
    for fuit in frutta:
      print(fuit)
      lista.append(fuit.upper() )
    [ print (fuit) for fruit in frutta ] #in una sola riga
    lista=[ fruit.upper() for fruit in frutta ]
    condition
    new_list=[ x for x in fruits if x!='apple']
    ---- dictionary comprehension
    lista=['Alberto','Andrea', 'Pietro']
    lista2=['Programamtore','Impiegato','Pensionato']
    d={}
    for (key,value) in zip(lista,lista2)
      m[key]=value
    d2={ key:value for (key,value) in zip(lista,lista2) }
    d3={ lista[i]:lista2[i] for i in range(len(lista)) }
    d4= { key+"man";val for (key,val) in d3.items() } #.items() è obbligatorio
    d5= { key+"man" if key != 'Pietro' else 'Paolo':val for (key,val) in d3.items() }
    d6= { key:[val, None] for (key,val) in enumerate["A","T","C","G"] }
      keys=["id","username","password"]
      users=["alnao","alberto.nao"]
    d7= [ {key:(i if key=="id" else users[i] if key=="useranme" else pwd for key in keys} for i in range(len(users))]
    
  • json https://www.youtube.com/watch?v=7MKJEvTxL0c&list=PLMP9hIwoX2DtrBeIDXggVbo49Uxr6ymxT&index=5

    import requests
    import json
    url="https://xxxx"
    todos=requests.get(url).json()
    for todo in todos:
      val=todo["value"]
      print(val)
    
  • wiki

    import wikipediaapi
    wiki = wikipediaapi.wikipedia('en')
    mon=['Jenuary']
    years=[x for x in range (1992,2022) ]
    pages=[]
    for year in years:	
      for month in months:
        pages.append("D..."+month
    existangce=[]
    for page in pages:
      page_py=wiki.page(page)
      existances.append(page_py.exists() )
      print(page_py.title)
    
  • terminare script https://lorenzoneri.com/come-terminare-uno-script-python/?utm_source=dlvr.it&utm_medium=linkedin&utm_campaign=come-terminare-uno-script-python

    import sys
    sys.exit()
    
  • esempio pandas legge un csv e fa

      import pandas as pd
      pd.options.display.max_rows = 999999
      df = pd.read_csv('data.csv')
      di = dict(zip(list(df.Duration), list(df.Maxpulse)))
      #di è un dizionario
      d = (zip(list(df.Duration), list(df.Maxpulse)))
      #
      dii={}
      for k in d:
      	dii[k[0]]=k[1]
      print(dii)
      print(dii['A61'])
    
  • f-string da python3.12

      stringhe speciali con f : interpolazione (string interpolation)
      	variabile=42
      	s=f"Numero = {variabile}"
      	print(s) #Numero = 42
      	s=f"Numero = {variabile + variable2}" #ok!
      con Py3.12 : eliminate le limitazioni
      	libro={ "titolo":"Sig Anelli", "autore":"Tolkien"}
      	s=f"Libro {libro["Titolo"] ora è possibile}
      	s=f="Scrivo {"\n"} che non era possibile con 3.11 ora"
      	s=f"""Questa string ha 3 doppi appici così è multilinea{
      		libro['autore'].lower() # e ora possibile mettere i commenti
      	} chiudo qua """
    
  • enumerazioni e description (CLASSIFICATION SCHEME) con la classe Enum

      from enum import Enum
      class ColorePrimario(Enum):
      	ROSSO=1
      	VERDE=2
      	BLU=3
      class PuntoCardinale(Enum):
      	NORD='N'
      	SUD='S'
      	OVEST='O'
      	EST='E'
      for direzione in PuntoCardinale:
      	print(f"Nome: {direzione.name}, Valore: {direzione.value}")
      print(PuntoCardinale.SUD == PuntoCardinale.NORD) #FLASE
      print(PuntoCardinale.SUD == PuntoCardinale.SUD)
      print(PuntoCardinale.SUD == PuntoCardinale.SUD2) 
      print(PuntoCardinale.SUD is PuntoCardinale.NORD) #FALSE
      print(PuntoCardinale.SUD is PuntoCardinale.SUD2) #TRUE #DUE MEMBRI CON LO STESSO VALORE SONO VISTI COME LO STESSO
      print(PuntoCardinale.SUD == 'S' ) #FALSE
      print(PuntoCardinale.SUD.value == 'S' ) #TRUE
    
  • SITI da vedere

AlNao.it

Nessun contenuto in questo repository è stato creato con IA o automaticamente, tutto il codice è stato scritto con molta pazienza da Alberto Nao. Se il codice è stato preso da altri siti/progetti è sempre indicata la fonte. Per maggior informazioni visitare il sito AlNao.it.

License

Public projects Free Software!

About

Python Examples

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published