These are chat archives for dbwebb-se/python

2nd
Oct 2016
alexandrei5
@alexandrei5
Oct 02 2016 10:23
Hej! Jag försöker ladda ner lab2 men inget händer. Jag ställer mig i kursrepot och kör dbwebb create lab2. Men inget finns i me/kmom03/lab2. What to do ?
MrIsaksson
@MrIsaksson
Oct 02 2016 13:15
Står du i kmom03?
@alexandrei5
Peder Tornberg
@Peder_Tornberg_twitter
Oct 02 2016 13:57
Ska väll räcka med att stå i kursens rot
MrIsaksson
@MrIsaksson
Oct 02 2016 14:06
iofs.
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 14:50

@mosbth @pejg12 @emilfolino Någon som kan förklara hur man ska tolka denna texten i kmom06:

Ett argument in om <> skall finnas med, ett argument inom [] kan finnas med.
Exempel:
./marvin-cli.py title <url>
./marvin-cli.py --input=<file> title

Jag har redan skrivit användningsfall som hanterar

 ./marvin-cli.py --get http://google.com

Men kan inte hitta något sätt att fånga argument inom diverse containers som är med i kraven:

./marvin-cli.py --output=<file> get <url>

Magnus Andersson
@bredsjomagnus
Oct 02 2016 15:16
kmom06 htmlphp: Sitter med uppdateringsformen och kan inte förstå vad som är fel. Funktionen vägrar söka på id- eller indexnummret. Har böcker i min databas och söker jag på titel eller vad annat så funkar det bra.
$sql = "SELECT * FROM books WHERE index=?";
$params = [$_GET['index']];
Detta vägrar fungera.
Skulle vara väldans glad och tacksam om någon har tips och knep på detta.
Inser att jag skriver i Python-tråden...
Allinrep
@pejg12
Oct 02 2016 19:47
@Todai88 Som kurslitteratur för kursmomentet finns manualen för getopt() med. Det är en användbar modul för att hantera argument.
@Todai88 Man ska inte skriva ut [] eller <> i kommandoraden, så du behöver inte kunna hantera såna tecken. Om det står --input=<file> så ska hela <file> bytas ut till ett filnamn, t.ex. --input=test.html
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 19:51
@pejg12 måste ens "=" vara med, eller funkar det utan?
Allinrep
@pejg12
Oct 02 2016 19:55
Om du använder getopt() så hanterar den = automatiskt
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 20:07
Någon som kan förklara varför mitt cursor (avslutande SELECT) inte returnerar några rader? Hela snippeten ligger i en try-catch som inte fångar något exception.
        conn = sqlite3.connect(db_name)
        cursor = conn.cursor()
        #setting up the create-string
        sql_create = "CREATE TABLE IF NOT exists history (url TEXT, latency TEXT, status INTEGER)"
        #setting up the insert-string
        aTuple = (str(URL), str(latency), str(req.status_code))
        sql_insert = "INSERT INTO history (url, latency, status) VALUES (?, ?, ?)"
        #sending the query
        cursor.execute(sql_create)
        cursor.execute(sql_insert, aTuple)
        if VERBOSE == True:
            cursor.execute("SELECT url, latency, status FROM history")
            print("IM IN")
            for row in cursor:
                print(row)
        conn.close()
Allinrep
@pejg12
Oct 02 2016 20:08
IF NOT exists
kanske hjälper med uppercase där
jag ser ingen cursor.commit()
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 20:10
@pejg12 Nope. Allt ner till loopen IF VERBOSE = True:
Är det något som krävs med cursors?
Allinrep
@pejg12
Oct 02 2016 20:11
Det kan vara anledningen till att det tog mig ett bra tag att hitta commit då... Vet att det löste mitt problem när jag satt med samma uppgift.
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 20:19
Löste sig till slut. Någon aning om varför min VERBOSE inte ändras under exekvering (default = False):
VERBOSE = False
            elif opt in ("--verbose"):
                print("VERBOSE!!")
                VERBOSE = True
consolen skirver ut "VERBOSE!!!", men min if-sats i ping (förra problemet) verkar inte märka att VERBOSE ändrats. Använder detta kommando i cli:
./marvin-cli.py --verbose --ping http://google.com
danijoha
@danijoha
Oct 02 2016 20:28
@Todai88 Variabeln VERBOSE är väl redan en bool? Så varför inte bara testa if VERBOSE:istället? Dessutom: om du verkligen vill en testa en bool-variabel på det viset så bör du använda is istället som iif VERBOSE is True:.
Allinrep
@pejg12
Oct 02 2016 20:30
är VERBOSE global?
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 20:30
@danijoha Spelar egentligen ingen som helst roll. Använde if VERBOSE: först, då det är mer lättläst, men fick ett kompilationsfel nära en ":", så ändrade.
@pejg12 Där var det! Tydligen så ville inte kompilatorn veta av att jag hade satt global VERBOSE i ping(), utan var tvungen att lägga skiten i parent-funktionen parseOptions där verbose sätts till True
Detta ÄVEN fast det funkade att sätta True även INNAN jag hade satt dem som global
Somliga gånger blir man riktigt förvirrad av Python om jag får säga det själv.
Allinrep
@pejg12
Oct 02 2016 20:33
Jag har inte helt koll på hur global fungerar i python heller.
danijoha
@danijoha
Oct 02 2016 20:45
Python försöker alltid tolka det som en lokal variabel i första hand om den kan och därefter som global. Global-deklarationen använder man för att ändra på detta i de fall man behöver skriva till en global variabel.
Joakim Bajoul Kakaei
@Todai88
Oct 02 2016 20:49
@danijoha Det stämmer inte riktigt; det verkar som att nyckelordet global bara behövs användas i en funktion där man direkt manipulerar en global variabel. Ska man bara se vad värdet av en variabel är, så funkar det utan att ha globali funktionen

Åtminstone verkar det vara fallet för mig.
Detta funkar INTE:

def main():
    foo()

def foo():
    BAR = False #Detta kommer skapa en lokal variabel med värdet False

Dock funkar detta:

def main():
    foo()
def foo():
    if BAR: #Den globala variabelns värde hämtas, även fast nyckelordet global inte använts
        #Do something
danijoha
@danijoha
Oct 02 2016 20:56
@Todai88 Det stämmer, global behövs ej vid läsning av global variabel, bara vid skrivning. Vid läsning kan ju python konstatera att den inte finns lokalt och därför tolka den som global istället om den finns.