Python tunnis tehtud näited

From ICO wiki
#!/usr/bin/python
#  -*- coding: utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals
#Elina Prudnikova A21, 12.05.2015
#1. Skript loeb failist numbrid
#2. Kui number jagub 3 siis prindib numbri

#exit 1 - Argumentide arv vale
#exit 2 - Aisendfaili ei õnnestu lugeda

import sys

if len(sys.argv) != 2:
	print ("Käsurea argumente peab olema 1")
	sys.exit(1)

try:
    sisend = open(sys.argv[1])

except IOError:
    print ('Sisendfaili, sys.argv[1], ei saa avada')
    sys.exit(2)

for line in sisend.readlines():
    line = line.strip()
    if line:
        line2=float(line)
        if line2 % 3 == 0:
            print (line)


#!/usr/bin/python
#  -*- coding: utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals

import sys
import urllib2


print("See on tehtud IDET kasutades")

print(sys.argv)
print(len(sys.argv))

if len(sys.argv) != 2:
    print("Kasuta programmi ...")
    sys.exit(1)


print("programm lõpetas töö")

try:
    fh = open(sys.argv[1], 'r')
    for line in fh.readlines():
        a_line = line.split(',')
        print("URL:", a_line[0], "String", a_line[1])
        try:
            u = urllib2.urlopen(a_line[0])
            sisu = u.read()
            print("Srtingi leidsin", sisu.count(a_line[1].strip()), "korda")
        except Exception:
            print("URLi avamine ebaõnnestus")
        print("URL:", a_line[0], "String", a_line[1])

except IOError:
    print("Faili avamine ebaõnnestus")


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22, 18.03.2014
# Programm mis võtab käsurea argumendina sisendfaili ning leiab sellest 
# sisendfailist kõige pikima sõna ja väljastab selle sõna koos reanumbriga.

import sys

if len(sys.argv) != 2:
	print "Argumentide arv on vale!"
	print "Kasuta programmi ", sys.argv[0], "sisendfail"
	sys.exit(1)

try:
	pikim = open(sys.argv[1], 'r')
	lookup = max(pikim, key = len)
	lookup = max(lookup.split(), key=len)
	print lookup
except IOError: 
	print "Sisendfaili ei saa avada."

with open(sys.argv[1]) as minuFail:
	for num, line in enumerate(minuFail, 1):
		if lookup in line:
			print 'Sõna oli real:', num



print "Programm lõpetas töö"


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22, 18.03.2014
# Programm avab faili, leiab sealt kõige pikema rea ning väljastab selle.


import sys

if len(sys.argv) != 2:
	print "Argumentide arv on vale!"
	print "Kasuta programmi ", sys.argv[0], "sisendfail"
	sys.exit(1)

try:
	pikim = open(sys.argv[1], 'r')
	lookup = max(pikim, key = len)
	print lookup
except IOError: 
	print "Sisendfaili ei saa avada."


print "Programm lõpetas töö"


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Programm avab faili, leiab sealt kõige pikema rea ning väljastab selle
# Autor: Karl-Martin Karlson

from __future__ import print_function

import sys

#Kontrollib käsurea argumentide arvu

if len(sys.argv) != 2:
    print("Argumentide arv on vale!")
    print("Kasuta programmi", sys.argv[0], "sisendfail")
    sys.exit(1)

failinimi = sys.argv[1]


try:
    ifh = open(sys.argv[1], 'r')
except I0Error:
    print("Faili ei saanud avada")
    sys.exit(1)
    
reapikkus = 0
pikimrida = "Tere"

ifh=open(failinimi)
while True:
    line = ifh.readline()
    if reapikkus < len(line):
        reapikkus = len(line)
        pikimrida = line       
    if not line:
        break
ifh.close()
print (pikimrida)


#!/usr/bin/env python
# -*- coding: utf-8  -*-
# Skript kontrollib argumentide arvu, avab argumendina antud faili(kontrollides eelnevalt selle
# olemasolu ning õiguseid sellest lugemiseks) ning seejärel prindib pikima rea välja.
# Autor: Marten Mattisen
import sys
if (len(sys.argv) != 2):
    print ("Argumentide arv on vale!")
    sys.exit(2)
try:
    print "Pikim rida:"+max(open(sys.argv[1], 'r'), key=len)
except IOError:
    print 'Sisendfail on puudu või pole sellest lugemiseks õiguseid'
    sys.exit(1)
print 'Skript on töö lõpetanud.'


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tere täpiline kommentaar
import sys

print sys.argv[0], sys.argv[1]
print 'Tere maailm!'

muutuja = 5

teine_muutuja = 2.0

print 'jagatis on', muutuja/teine_muutuja
print 'Palun sisesta midagi'
vastus = int(raw_input())

print 'sisestasid', vastus/2.0

if vastus%2 == 0:
    print 'vastus on paarisarv'
else:
    print 'vastus on paaritu arv'
    
for i in range(1,9999):
    print 'i =',i
    
while True:
    print "sisesta midagi"
    a = raw_input()
    if a == 'q':
        print 'programm lõpetas töö'
        sys.exit(0)

Pythoni programm, mis kontrollib, kas arv jagub 10-ga

#!/usr/bin/python
# -*- coding: utf-8 -*-

while True:
    print 'Kirjuta mingi arv, mis jagub 10ga'
#raw_input annab stringi, see on vaja teha integer tüüpi
    kasutajaarv = int(raw_input())
    if kasutajaarv%10 == 0:
        break

print 'Jagus! Programm lõpetab!'

Skript väljastab esmalt argumentide arvu ja argumendid (iga argument eraldi real)

#!/usr/bin/python
# -*- coding: utf-8 -*-
#loo skript, mis saab käsurealt 0..n argumenti
#skript väljastab esmalt argumentide arvu ja argumendid (iga argument eraldi real)

import sys

print 'argumentide arv:', len(sys.argv)

for i in sys.argv:
     print "Argument: ", i

Pythoni programm, mis väljastab ainult paaritud argumendid

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Loo skript mis saab käsurealt 0..n argumenti
#väljastab kõik paaritud argumendid (iga argument eraldi real)

import sys

for i in sys.argv[1:]:
    if int(i)%2 == 0:
        pass
    else:
        print 'Paaritu argument: ', i

Pythoni programm, mis kirjutab faili, kus on 1000 rida ja igal real on juhuarv 1..1000

#!/usr/bin/python
# -*- coding: utf-8 -*-

import random
fo = open("fail.txt", 'w')

for x in range(1, 1001):
	ran=str(random.randrange(1,1000+1))	
	fo.write(ran+'\n')

fo.close()

Skript sorteerib fail.txt-s olevad numbrid ja väljastab uute faili

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab 
# uute faili

fo = open("fail.txt", "r" )
fo2 = open("sorteeritud.txt", 'w')

lines = fo.readlines()
results = map(int, lines)

results.sort()

for item in results:
  fo2.write("%s\n" % item)

fo.close()
fo2.close()

Skript sorteerib fail.txt-s olevad numbrid ja väljastab uute faili

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab 
# uute faili
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

f = open(sys.argv[1], 'r')
lines = f.readlines()
lines.sort(key = int)


f = open('uusfail3.txt', 'w')
for number in lines:
	f.write(number)
f.close


Skript sorteerib fail.txt-s olevad numbrid ja väljastab ainult unikaalsed numbrid

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab ainult
# unikaalsed numbrid

fo = open("fail.txt", "r" )
fo2 = open("unikaalsed.txt", 'w')

lines = fo.readlines()
results = map(int, lines)

results2 = list(set(results))
results2.sort()

for item in results2:
  fo2.write("%s\n" % item)

fo.close()
fo2.close()

Skript, mis tagastab käsurealt etteantud kasutaja UID

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from pwd import getpwnam
print getpwnam(sys.argv[1]).pw_uid

Skript, mis väljastan NxN ühikmaatriksi

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Väljastab NxN ühikmaatriksi

import sys
import numpy as np

n = float(sys.argv[1])

print np.identity(n)

Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu
from sys import argv

if len(argv) < 2:
    print "Sa ei sisestanud ühtegi argumenti, mida kontrollida"
    exit(1)
    
fh=open(argv[1])
read = fh.readlines()

sonad = 0
tahed = 0
for rida in read:
    tahed = tahed + len(rida)
    sonad = sonad + len(rida.split())

print "Ridu:" , len(read)
print "Sonu:" , sonad
print "Tähti:" , tahed

fh.close()

Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tee skript, mis leiab käsurealt etteantud tekstifaili
# ridade arvu, tähtede arvu ja sõnade arvu ja väljastab ekraanile

import sys

f = open(sys.argv[1], "r" )

lines = f.readlines()
count = 0
sonad = 0


for i in range(0,len(lines)):
    count = count + len(lines[i])
    sonad = sonad + len(lines[i].split(" "))
    
print "Ridu:", len(lines)
print "Tähemärke:", count
print "Sõnu:", sonad

f.close()

Skript kirjutab tekstifaili 100 rida rea numbrite ja random sisuga, komadega eraldatult

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tee skript, mis kirjutab komadega eraldatud tekstifaili 100 rida, igas reas järgnev info:
# rea nr, random nr 1..100, random märk pikkusega 0..32

import sys
import random
import string

f = open(sys.argv[1], "w" )

for i in range(1, 101):
    ran=str(random.randrange(1,100+1))	
    f.write(str(i)+',')
    f.write(ran+',')
    for j in range(1,random.randrange(1,32+1)):
        f.write(random.choice(string.ascii_letters))
    f.write('\n')
 
f.close()

Skript kirjutab ette antud faili 100 rida. Igal real on rea number, suvaline number 1 ja 100 vahel ja suvaline tähemärk, mis on komadega eraldatud

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript kirjutab ette antud faili 100 rida. Igal real on rea number, suvaline number 1 ja 100 vahel ja suvaline tähemärk, mis on komadega eraldatud
from sys import argv
from random import randint
import random
letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

if len(argv) < 2:
    print "Sa ei sisestanud ühtegi argumenti, mida kontrollida"
    exit(1)
    
fh=open(argv[1], "w")

sonad = 0
tahed = 0
for rida in range(100):
    fh.write(str(rida+1) + "," + str(randint(1, 101)) + "," + random.choice(letters) + "\n")
    
fh.close()

Skript saadab meili kasutades smtplib teeki ning on praktiliselt identne StackOverflow lehel asuva koodiga, mille leiab sõnumi sisust.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Üllar Seerme, A21
# 25.03.14
import smtplib

FROM = ""
TO = [""]

SUBJECT = "Hello World!"
TEXT = "Greetings from http://stackoverflow.com/questions/6270782/sending-email-with-python"

MESSAGE = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

server = smtplib.SMTP("mail.itcollege.ee")
server.sendmail(FROM, TO, MESSAGE)
server.quit()

skript saadab meili kasutades smtplib teeki. Süntaksi sain tutorialspoint.com dokumentatsioonidest.

#!/usr/bin/python
#A21 Juri Kononov Ilma autentimist meili saatmine
import smtplib

smtplib.SMTP('mail.itcollege.ee').sendmail('kellelt@itcollege.ee', 'kellele@itcollege.ee', "emaili sisu")


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Autor: Karl-Martin Karlson
# Rühm: A21
# Skript saadab enda sisu valitud meili aadressile

import smtplib

with open(__file__) as f:
    msg = f.read()

print "Message length is " + repr(len(msg))


server = smtplib.SMTP("172.16.0.160", 25)
server.sendmail("saatja@itcollege.ee", "saaja@itcollege.ee", msg)
server.quit()
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript läheb ette antud veebilehele ning kopeerib
# kõik leitud URlid lingid.txt faili

import urllib2
import re
import sys

if len(sys.argv) != 2:
    print("Argumentide arv on vale!")
    print("Kasuta programmi", sys.argv[0], "sisendfail")
    sys.exit(1)
    
url = sys.argv[1]
f = open('lingid.txt','w')

page = urllib2.urlopen(url)
page = page.read()
links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)

for link in links:
    f.write('%s \n' % (link[0]))

f.close()


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22 - 25.03.14
# Leiab etteantud URL'i lähtekoodist kõik lingid.

import urllib2
import sys

if len(sys.argv) != 2:
  print "Argumentide arv on vale!"
  print "Kasuta programmi ", sys.argv[0], "http://www.veebiaadress.com"
  sys.exit(1)


from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen(sys.argv[1])
soup = BeautifulSoup(page.read())
links = soup.findAll("a")
for link in links:
    print link["href"]


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Imre Lebedev - A22 - 08.04.2014
# Võtab sisendfailiks logifaili ja kirjutab logifaili väljudnisse järgmiselt
# Et logifaili ajad hakkaks enda aega lugema esimese logirea järgi
import sys
import re
import datetime

if len(sys.argv) != 2:
    print("Argumentide arv on vale!")
    print("Kasuta programmi", sys.argv[0], "sisendfail")
    sys.exit(1)

try:
    fh = open('/home/valjunddomeen.txt','w')
except IOError:
    print "Väljundfail on juba olemas või ei ole sinna võimalik kirjutada"
    sys.exit(1)

try:
    f = open(sys.argv[1],'r')
except IOError:
    print "Sisendfail puudub või ei ole piisavalt õigusi selle avamiseks"
    sys.exit(1)

for line in f:
    try:
        info=line.split("@")[1]
        fh.write(info)
    except IOError:
        print "Faili sisse ei õnnestu kirjutada"
f.close()


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd, A22
# Skript, mis loeb sisendfailist emailid ja väljundfaili kirjutab emaili domeenid.

import sys

if len(sys.argv) != 3:
	print "Argumentide arv on vale!"
	print "Kasuta programmi ", sys.argv[0], "Sisendfail Väljundfail"
	sys.exit(1)

try:
	input_file = open(sys.argv[1], 'r')
except IOError: 
	print "Sisendfaili ei saa avada."

try:
	output_file = open(sys.argv[2], 'w')
except IOError:
	print "Väljundfaili ei saa kirjutada."

for line in input_file.readlines():
	print line
	line = line.split("@")[1]
	output_file.write(line)


#!/usr/bin/python
#  -*- coding: utf-8 -*-
# Autor Karl Männil
# Programm kontrollib kas on võimalik avada käsurealt sisestatud parameetrite nimelisi faile
from __future__ import print_function
from __future__ import unicode_literals

import sys

# Kontrollime kas programmil on piisavalt argumente (vaja on kolme aga programm ise on ka parameeter)
# Vajadusel pahandame kasutajaga ning õpetame teda!
if len(sys.argv) != 4:
    print("Kasuta programmi vähemalt kolme parameetriga")
    sys.exit(1)
print("Programm lõpetas töö")

# Proovime kas saame avada faili mis sisestati esimese parameetrina (tegelikult parameeter 2), kirjutame ka staatuse
try:
    fh = open(sys.argv[1],'r')
    print ("Faili nimega ", sys.argv[1], "saab avada")
except IOError:
    print("Sisendfaili ei saa avada")

# Proovime kas saame avada faili mis sisestati teise parameetrina (tegelikult parameeter 3), kirjutame ka staatuse
try:
    fh = open(sys.argv[2],'r')
    print ("Faili nimega ", sys.argv[2], "saab avada")
except IOError:
    print("Sisendfaili ei saa avada")

# Proovime kas saame avada faili mis sisestati kolmanda parameetrina (tegelikult parameeter 4), kirjutame ka staatuse
try:
    fh = open(sys.argv[3],'r')
    print ("Faili nimega ", sys.argv[3], "saab avada")
except IOError:
    print("Sisendfaili ei saa avada")
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals

import sys
import urllib2
import time


if len(sys.argv) != 3:
    print("Vale argumentide arv!")
    sys.exit(1)
#ava väljundfail kirjutamiseks argument 3
try:
    fhw = open(sys.argv[2], 'w')

except IOError:
    print("Väljundfaili avamine ebaõnnestus!")
    sys.exit(2)



try:
    fhr = open(sys.argv[1], 'r')
    for line in fhr.readlines():
        a_line = line.split(",")
        try:
            u = urllib2.urlopen(a_line[0])
        except Exception:
            print(a_line[0], "URL avamine ebaõnnestus")
        sisu=u.read()
        arv=sisu.count(a_line[1].strip())
        if arv > 0:
            tekst = "URL: "
            tekst += str(a_line[0])
            tekst += " Fraas: "
            tekst += str(a_line[1].strip())
            tekst += " "
            tekst += time.strftime("%Y-%m-%d %H:%M:%S")
            tekst += " OK"
            tekst += "\n"
            # noinspection PyTypeChecker
            fhw.write(tekst)
        else:
            tekst="URL: "
            tekst+=str(a_line[0])
            tekst+=" Fraas: "
            tekst+=str(a_line[1].strip())
            tekst += " "
            tekst += time.strftime("%Y-%m-%d %H:%M:%S")
            tekst+=" NOTOK"
            tekst+="\n"
            fhw.write(tekst)


except IOError:
    print("Sisendfaili ei saanud avada")
    sys.exit(1)