Difference between revisions of "Python"

From HackerNet
Jump to: navigation, search
Line 145: Line 145:
 
  cd /home/sparco/secret-hackernet-stuff
 
  cd /home/sparco/secret-hackernet-stuff
 
Kör sedan följande kommando för att starta en python webserver som lyssnar på port 8000 på alla interface:
 
Kör sedan följande kommando för att starta en python webserver som lyssnar på port 8000 på alla interface:
 +
 +
'''Python 2.7'''
 
  python -m SimpleHTTPServer
 
  python -m SimpleHTTPServer
 +
'''Python 3.X'''
 +
python -m http.server
  
 
[[Category:Guider]]
 
[[Category:Guider]]

Revision as of 16:13, 25 January 2021

Python är ett objektorienterat programspråk som siktar på att vara funktionellt och lättläst.

Installation

Python följer med de flesta linux-distar.

python -V

Pydoc
Läsa hjälpfiler om moduler, klasser och funktioner.

pydoc <namn>
pydoc open
pydoc file
pydoc os

Manuellt ta reda på möjliga funktioner/methods i ett library.

dir()
dir(library)

Virtualenv

Virtualenv är ett verktyg för att skapa isolerade Python environments. Det skapar ett directory som innehåller alla nödvändiga executables för att köra Python-projektet. Man kan sedan installera python-paket oberoende av övriga system. Virtualenvwrapper tillhandahåller ett gäng verktyg för att enklare jobba med virtualenv.

Setup

sudo pip install virtualenvwrapper
echo '. /usr/local/bin/virtualenvwrapper.sh' >> .bashrc && source .bashrc

Jobba med virtualenv

mkvirtualenv test
deactivate
lsvirtualenv
workon test

PIP

PIP är ett package management system som används för att installera software packages skrivna i Python.

sudo pip install <package>

Exempel HTTP Server
Det finns flera olika webbservrar skrivna i python.

sudo pip install lpthw.web
import web

Referenslista

Här följer en lista på hur man gör diverse vanliga saker för den ovane. Detta utgår från python 2.7.

Variabel

nummer = 102

Output, print från variabel

print "The name is %s and %d." % (namn, nummer)

Input

x = raw_input(">> ")
x = int(raw_input(">> "))

Läsa fil

filnamn = raw_input(">> ")
fil = open(filnamn)
print fil.read()

Skriva till fil

fil = open(filename, 'w')
line1 = raw_input("line 1: ")
fil.write(line1)
fil.close()

Definiera funktion och kalla på den.

def funk1():
   print "Detta ar en funktion"

funk1()

Return value

def funk1(x):
   return x + 4

value = funk1(20)

Avsluta, ctrl + d

exit(0) # i script
quit() # i cli

If_then_else

print "Valj 1 eller 2"
valet = raw_input(">> ")

if valet == "1":
   print "You is 1"
elif valet == "2":
   print "You is 2"
else:
   print "You die"

For-loop

the_count = [1, 2, 3, 4, 5]
for number in the_count:
   print "This is %d" % number

Lista

lista = [1, 2, 3, 4, 5, 6, "hest" ];
print lista[0:2]
lista[2] = 20;

Append

Dictionary

dict = {'Name': 'Sara', 'Age': 20, 'Class': 'No'};
print dict['Name']
dict['Age'] = 21;

Add new entry

dict['School'] = "Yes";

Password
Get password, hidden

import getpass
secretx = getpass.getpass("Enter password:")

Grundläggande sanitetscheckar

pip install pep8 pylint pyflakes

pep8 the_script.py
pylint the_script.py
pyflakes the_script.py

netaddr

netaddr är ett network address manipulation library. Man kan jobba med IP-adresser och nät.

sudo pip install netaddr

Usage

from netaddr import *
cidr = IPNetwork(raw_input("CIDR-notation: "))
firstip = cidr[1]
netmask = cidr.netmask

OOP

Python är ett Object Oriented Programming Language vilket innebär att man har stöd för att bygga objekt. Python är designat så att allting är ett objekt vilket t.ex. innebär att datatypen "string" i python också är ett objekt. Exempel på hur man skapar en class och instansierar ett objekt.

class VLAN:
    def __init__(self, id, name):
        self.id = id
        self.name = name

vlan10 = VLAN(10, "Test")

HTTP server

Om man behöver sätta upp en http server snabbt o enkelt kan man göra det med Python.

Börja med att gå till det directory du vill dela ut.

cd /home/sparco/secret-hackernet-stuff

Kör sedan följande kommando för att starta en python webserver som lyssnar på port 8000 på alla interface:

Python 2.7

python -m SimpleHTTPServer

Python 3.X

python -m http.server