python - advanced - 13 - Advanced modules 1



   Beginner Intermediate Advanced Functions - Iterators 

Advanced modules-1 - Advanced modules-2

Advanced modules

Datetime modulu

from datetime import datetime

simdi = datetime.now()
result1 = simdi.year
result2 = datetime.ctime(simdi)
result3 = datetime.strftime(simdi,'%Y')
print (result1)
print (result2)
print (result3)

#
2024 Mon Aug 19 22:38:08 2024 2024

split yerine strptime

t='15 April 2019 hour 10:12:30'
result1 = datetime.strptime(t,'%d %B %Y hour %H:%M:%S')
print(result1)
result2 = result1.year
print(result2)

#
2019-04-15 10:12:30 2019

OS modulu

Dosya klasör işlemleri 
import os

result = dir(os)
result = os.name # hangi os bu bilgisayarda : nt
result=os.getcwd() # su anda calistigim klasor: C:\py\test\python-exercise


make directory:
os.mkdir("jojomoka")

program calistirma
os.system("notepad.exe")

Regular expression modulu

ara bul

import re
strText ="Python kursu: Yo super Python kursu"
result=re.findall("Python",strText)
#
['Python', 'Python']

bol listele
import re
strText ="Python kursu: Yo super Python kursu"
result=re.split(" ",strText)

print(result)

#
['Python', 'kursu:', 'Yo', 'super', 'Python', 'kursu']

find replace
import re
strText ="Python kursu: Yo super Python kursu"
result=re.sub(" ","||",strText)
print(result)

#
Python||kursu:||Yo||super||Python||kursu

search like

.. iki karakter degisebilir

mport re
strText ="Python kursu: Yo super Python kursu"
result=re.findall("Py..on",strText)
print(result)

#
['Python', 'Python']

starts with

result=re.findall("^P",strText)

#
['P'] # ilk rastladigini verip duruyor

ends with

tum strText`i blok olarak alip,bunun `u` ile bitip bitmedigine bakar. Her bir kelime blogunu alip bakmak icin split ile liste haline getirmek lazim
result=re.findall("u$",strText)
print(result)

Json modulu

Her turlu platform Json`u kullaniyor: android, web uygulamasi vs
Data veri turu. ortak veri tasima araci
JSON bilgiler hep string olarak gelir, ama ici Json`a gore duzenlenmistir

import json
person='{"name":"Ali","lang":["py","C#"]}'
#normalde dictionnary basinda {} var,
#ama JSON dict`i hep '` icine aliyor
# yukaridaki person Json'a gore bir dictionnary`dir`
result= json.loads(person)
print(type(result)) #<class 'dict'> olarak verir
print(result)

print(result["name"]) #Ali
#
{'name': 'Ali', 'lang': ['py', 'C#']}
Ali

Json dosyasi okuma

person.json
'{"name":"Ali","lang":["py","C#"]}'

json.py
import json

with open("person.json") as p_json:
    data_pers =json.load(p_json)
    print(data_pers)
    print(data_pers["name"]) #Ali
#
{'name': 'Ali', 'lang': ['py', 'C#']}

Dosyaya append et

person_dict = {
    "name":"Coni Be Good",
    "lang":["Vba","Pascal"]
}
with open("person.json","a") as p_json:
    # data_pers =json.load(p_json)
    # print(data_pers)
    json.dump(person_dict,p_json)


person.json
{"name":"Ali","lang":["py","C#"]}{"name": "Coni Be Good", "lang": ["Vba", "Pascal"]}

Requests modulu

bunu kendimiz yuklememiz lazim 
c:\Python312 altina yuklemek bende isledi
pip install requests

>pip list msdos komutu ile yuklenis oldugunu kontrol et
PS C:\prog_test\test\python-exer> pip list
Package Version ------------------ -------- certifi 2024.7.4 charset-normalizer 3.3.2 idna 3.7 numpy 2.0.0 pip 24.0 requests 2.32.3 sqlparse 0.5.1 tzdata 2024.1 urllib3 2.2.2

ayrica explorer`da suraya bakip da kontrol edebiliriz:
C:\Python312\Lib\site-packages

Json ile web bilgi etme
import requests
# jsonplaceholder.typicode.com
result = requests.get("https://jsonplaceholder.typicode.com/todos")
print (result)
print (type(result)) # str - bize string bilgi geliyor - Json lazim demektir

#
<Response [200]> - bu basarili olduk demek

- Json ile bilgi ayiklama
mport requests
import json

# jsonplaceholder.typicode.com
result = requests.get("https://jsonplaceholder.typicode.com/todos")
result=json.loads(result.text)

for i in result:
    print(i['title'])

#
delectus aut autem quis ut nam facilis et officia qui fugiat veniam minus
................. vs vs....

Filtreleme
import requests
import json

# jsonplaceholder.typicode.com
result = requests.get("https://jsonplaceholder.typicode.com/todos")
result=json.loads(result.text)

for i in result:
    if i["userId"]==2: # FILTRELEME
        print(i['title'])

#
suscipit repellat esse quibusdam voluptatem incidunt distinctio vitae autem nihil ut molestias quo et itaque necessitatibus maxime molestiae qui quas velit adipisci non ad dicta qui amet quaerat doloribus ea
..........

Exchange rate API ile doviz uygulamasi

https://www.exchangerate-api.com/ : bir servis kullanimini biliyor olmamiz gerekiyor - bu ucretsiz - ama su kadara kadar ucretsiz, daha fazla request olursa 

import requests
import json


api_key_exch = "e731dd249c6995xxxx466"
api_url_exch = f"https://v6.exchangerate-api.com/v6/{api_key_exch}/latest/" # sond USD vardi sildim, kendimiz ekleyecegiz

bozulan_doviz = input("bozuklan doviz turu: ")
alinan_doviz = input("Alinan doviz turu: ")
miktar = input(f"ne kadar {bozulan_doviz} bozdurmak istiyorsunuz: ")

sonuc = requests.get(api_url_exch + bozulan_doviz)
#print(sonuc.text) # conversion_rates en basta yazi olarak yazar ---
sonuc_json=json.loads(sonuc.text)

print(sonuc_json["conversion_rates"][alinan_doviz])

#
bozuklan doviz turu: USD Alinan doviz turu: TRY ne kadar USD bozdurmak istiyorsunuz: 100 33.7754

- formati duzeltilmis output - 
import requests
import json


api_key_exch = "e731dd249c6995xxxx466"
api_url_exch = f"https://v6.exchangerate-api.com/v6/{api_key_exch}/latest/"

bozulan_doviz = input("bozuklan doviz turu: ")
alinan_doviz = input("Alinan doviz turu: ")
miktar = int(input(f"ne kadar {bozulan_doviz} bozdurmak istiyorsunuz: "))

sonuc = requests.get(api_url_exch + bozulan_doviz)
#print(sonuc.text) # conversion_rates en basta yazi olarak yazar ---
sonuc_json=json.loads(sonuc.text)

#print(sonuc_json["conversion_rates"][alinan_doviz]) #33.754

print("1 {0}={1}{2}".format(bozulan_doviz,sonuc_json["conversion_rates"][alinan_doviz],alinan_doviz))

#
bozuklan doviz turu: USD Alinan doviz turu: TRY ne kadar USD bozdurmak istiyorsunuz: 100 1 USD=33.7754TRY

-hesaplama-
import requests
import json


api_key_exch = "e731dd249c6995xxxx466"
api_url_exch = f"https://v6.exchangerate-api.com/v6/{api_key_exch}/latest/" # sond USD vardi sildim, kendimiz ekleyecegiz

bozulan_doviz = input("bozuklan doviz turu: ")
alinan_doviz = input("Alinan doviz turu: ")
miktar = int(input(f"ne kadar {bozulan_doviz} bozdurmak istiyorsunuz: "))

sonuc = requests.get(api_url_exch + bozulan_doviz)
#print(sonuc.text) # conversion_rates en basta yazi olarak yazar ---
sonuc_json=json.loads(sonuc.text)

#print(sonuc_json["conversion_rates"][alinan_doviz]) #33.754

print("1 {0}={1}{2}".format(bozulan_doviz,sonuc_json["conversion_rates"][alinan_doviz],alinan_doviz))
print("{0}{1}={2}{3}".format(miktar,bozulan_doviz, miktar* sonuc_json["conversion_rates"][alinan_doviz],alinan_doviz))

#
bozuklan doviz turu: USD Alinan doviz turu: TRY ne kadar USD bozdurmak istiyorsunuz: 100 1 USD=33.7754TRY 100USD=3377.54TRY

GitHub REST API

acik repository uzerinden bu yapilir
github`a git
profile tikladiginda `a cikan menude:
settings`e git
-> developper settings
yazi kisminda developper documentation`a tikla

ya da

github developper
burada nasil kullanilacagi anlatilir

biz su adrese gidecegiz
api.github.com
https://api.github.com/users/oruckenan
https://api.github.com/users/oruckenan/repos

settings-developper settings
personal access tokens / tokens classic/ burada generate token yapmaliyiz

bir kod verilecek:
XXXXXXXXXXj8YZa4IKzJ6


import requests

class Github_repo:
    def __init__(self):
        self.api_url ='https://api.github.com'
        self.token='ghp_xxxxxxxxxxxxxxxxZa4IKzJ6'
    def getUser(self,username):
        response=requests.get(self.api_url+'/users/'+username)
        return response.json() # bu PARANTEZ`lere dikkat et - canimdan bezdirdi bulana kadar
    def getRepositories(self,username):
        response=requests.get(self.api_url+'/users/'+username+'/repos')
        return response.json()
        def createRepository(self,name):
        response=requests.post(self.api_url+'/user/repos?access_token='+self.token,json={
            "name":name,
            "description":"this is t 1st repo",
            "hompage":"https://alorya.com",
            "private":False,
            "has_issues":True,
            "has_projects":True,
            "has_wiki":True
        })
        return response.json() ### Calismiyor cunku github sys degistirmis ###

github_obj = Github_repo()


github_obj = Github_repo()
while True:
    secim = input('1-find user\n2-get repo\n3-create repo\n4-Exit\nSeciniz: ')
    if secim=='4':
        break
    else:
        if secim =='1':
            username=input('username: ')
            result=github_obj.getUser(username)
            print(f'name: {result['name']} - public repo: {result['public_repos']} - follower: {result['followers']}')
        elif secim =='2':
            username = input('username: ')
            result=github_obj.getRepositories(username)
            for repo in result:
                print(repo['name']) 
        elif secim =='3':
            name =input('repository name: ')
            result = github_obj.createRepository(name)
            print(result)
        else:
            print("yanlis secim")

# 1 #
username: oruckenan name: O. Kenan Yildirim - public repo: 9 - follower: 0

# 2 #
Seciniz: 2
username: oruckenan
asp_net
gallery-7
java
reactjs-by-ArtiDjeims-galleryApp
reactjs-by-gulshancodes
reactjs-by-kaeross-galleryApp
reactjs-by-OriAmir-React-Responsive
reactjs-by-Signor1-filterableGallery
vba_multiple

# 3 #
normalde data ekler
# 4 #
yanlis secim

Kendi modulumuzu yazmak

_modules_mod.py
klasor icinde bu dosya ile dururken, bunu import ile baska dosya icinden cagirabiliriz

veya

eklemek icin ilk once hangi path de koymamiz gerektigini bulmak icin
windows powershell veya msdos prompt
>python.exe
>>>import sys
>>>sys.path

buradan AppData icindeki python.../lib klasoru icine _modules_mod.py dosyasini koyabiliriz
cagirmak icin yine import kullanabiliriz

Not: Kendi modulumuzu yazdigimizda, filename olarak sayi ile baslayamaz







Comments

Popular posts from this blog

python - pro - 20 - SQLite

python - pro - 21 - NoSQL

python-beginner - 1 - strings splits