Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Radi van petlje, u petlji ne radi

[es] :: Python :: Radi van petlje, u petlji ne radi

[ Pregleda: 1795 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Radi van petlje, u petlji ne radi22.09.2010. u 12:03 - pre 113 meseci
Malo se igram sa pythonom i jedna jednostavna skripta mi ne radi.

Code (python):

#! /usr/bin/env python

import string
import socket

fo = open("neki_fajl.txt", "r")
doms = fo.read()
a = doms.replace("ServerAlias","")
b = a.replace(" ","")
c = b.split("\n")
#print type(c)
print c[4]

ip = socket.gethostbyname_ex(c[4])
print ip[2]

#for domen in c:
     #ip = socket.gethostbyname_ex("domen")
     #print domen
     #if ip[2] == "xxx.xxx.xxx.xxx":
          #print domen+"  lalal"
     #else:
          #print domen+"  lalala"

fo.close()
 


U fajlu neki_fajl.txt se nalazi lista domena (a i b promjenjive su tu samo malo da isformatiraju).
E sad, print ip[2] radi - ali ovo u for petlji ne radi. Zasto?
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.ADSL.neobee.net.



+1 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 07:42 - pre 113 meseci
Zameni u petlji :

ip = socket.gethostbyname_ex("domen")

sa:

ip = socket.gethostbyname_ex(domen)

 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 08:02 - pre 113 meseci
Jok, probao sam sve varijante navodnika, ista stvar.
Ovo je greska koja se javlja kad pokrenem skript.
Code:
Traceback (most recent call last):
  File "za_preb.py", line 18, in <module>
    ip = socket.gethostbyname_ex(domen)
socket.gaierror: [Errno -2] Name or service not known


I meni djeluje kao da on ne zamjeni promjenjivu domen sa njenom vrednoscu nego pokusava da uradi rezolving za string domen, sto naravno ne moze.
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.ADSL.neobee.net.



+1 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 08:19 - pre 113 meseci
Možda nešto u fajlu "neki_fajl.txt".

Ja sam probao sa:
Code:

www.google.com
www.python.org
8.8.8.8
8.8.4.4
80.74.160.12
80.74.160.38


Dobijem:
Code:

80.74.160.12
['80.74.160.12']
www.google.com
www.google.com  lalala 74.125.39.99
www.python.org
www.python.org  lalala 82.94.164.162
8.8.8.8
8.8.8.8  lalala 8.8.8.8
8.8.4.4
8.8.4.4  lalala 8.8.4.4
80.74.160.12
80.74.160.12  lalala 80.74.160.12
80.74.160.38
80.74.160.38  lalala 80.74.160.38

  lalala 192.168.0.101

  lalala 192.168.0.101

  lalala 192.168.0.101
>Exit code: 0


Malo sam modifikovao kod:
Code:

#! /usr/bin/env python

import string
import socket

fo = open("neki_file.txt", "r")
doms = fo.read()
a = doms.replace("ServerAlias","")
b = a.replace(" ","")
c = b.split("\n")
#print type(c)
print c[4]

ip = socket.gethostbyname_ex(c[4])
print ip[2]

for domen in c:
    ip = socket.gethostbyname_ex(domen)
    print domen
    if ip[2] == "xxx.xxx.xxx.xxx":
        print domen+"  lalal "+ip[2][0]
    else:
        print domen+"  lalala "+ip[2][0]

fo.close()
 


 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 09:26 - pre 113 meseci
Cek, aj pokreni skriptu sa iskomentarisanim print c[4] i print ip[2] da vidim sta ti vratiti.
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

Branko
Branko Petrović
Čačak

Član broj: 4123
Poruke: 89
*.ADSL.neobee.net.



+1 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 10:18 - pre 113 meseci
Za fajl:
Code:

www.google.com
www.python.org
www.elitesecurity.org
www.mozilla.com


i kod:
Code:

import string
import socket

fo = open("neki_file.txt", "r")
doms = fo.read()
a = doms.replace("ServerAlias","")
b = a.replace(" ","")
c = b.split("\n")
#print type(c)
#print c[4]

#~ ip = socket.gethostbyname_ex(c[4])
#print ip[2]

for domen in c:
    ip = socket.gethostbyname_ex(domen)
    print domen
    if ip[2][0] == "xxx.xxx.xxx.xxx":
        print domen+"  lalal "+ip[2][0]
    else:
        print domen+"  lalala "+ip[2][0]

fo.close()



Ovaj put iz Ubuntu-a dobijam :

www.google.com
www.google.com lalala 74.125.39.99
www.python.org
www.python.org lalala 82.94.164.162
www.elitesecurity.org
www.elitesecurity.org lalala 217.26.67.165
www.mozilla.com
www.mozilla.com lalala 63.245.217.20
>Exit code: 0

 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Radi van petlje, u petlji ne radi23.09.2010. u 10:34 - pre 113 meseci
Hm, kopirao sam sve kako si ti napisao i to radi i meni, na neki nacin. Na kraju dobijem gresku.

www.google.com
www.google.com lalala 74.125.43.106
www.python.org
www.python.org lalala 82.94.164.162
www.elitesecurity.org
www.elitesecurity.org lalala 217.26.67.165
www.mozilla.com
www.mozilla.com lalala 63.245.217.20
Traceback (most recent call last):
File "d.py", line 16, in <module>
ip = socket.gethostbyname_ex(domen)
socket.herror: [Errno 3] Unknown server error


Vjerovatno ima nesto i do verzije pythona ili biblioteka.
Ali na jednom stranom forumu sam nasao izgleda najpravilnije rijesenje. Radi se o tome u mojoj skripti kad naidje na domen koji ne moze da razrijesi on se zaglupi i izbaci error bez da prikaze sta je do tada uradio.

Code (python):
for domen in c:
try:
  ip = socket.gethostbyname_ex(domen)
  print "IP for %s is %s" % (domen, ip)
except:
  print "No reverse DNS entry for %s" % domen


I ovo radi bas kako treba.
Koliko vidim pravilan exception handling je veoma bitan u pythonu...?
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

[es] :: Python :: Radi van petlje, u petlji ne radi

[ Pregleda: 1795 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.