Ip adresi alırken utf-8 sıkıntı çıkartıyor

arkadaşlar bir fonksiyon yazdım bu fonksiyon da sistem ıpv4 adresi ve ıpv6 adresi alıyor şöyle
def ipadress(version):
import os
os.chdir(‘c:/Doc’)
os.system(“ipconfig /all > c:/Doc/ipconfig.txt”)
with open(“ipconfig.txt”, ‘rb’) as dosya:
lines = [l.decode(‘utf8’, ‘ignore’) for l in dosya.readlines()]
if version == “4”:
ıpv4 = lines[18]
return ıpv4
if version == “6”:
ıpv6 = lines[17]
return ıpv6
ancak bazı bilgileri atıyor mesela 255 ise 55 veriyor ignore yapmadığım zaman da dönüştürmüyor hata veriyor ne yapabilirim

Şu kod işe yarayacaktır :

import socket
socket.gethostbyname('google.com')

Kaynak : https://stackoverflow.com/questions/8370361/get-ip-address-of-url-in-python

import socket
print(socket.gethostbyname(socket.gethostname()))

bu kod ile de ekrana kendi ip adresinizi çıktı olarak verebilirsiniz.

ancak bu sadece ip adresi veriyor anlayacağınız üzere ıpconfig /all komutu sayesin de ben bir çok bilgi elde ediyorum

Adım 1 : cmd’yi çalıştırın
Adım 2 : pip install ifcfg kodunu yazın.İndirmenin tamamlanmasını bekleyin.
Adım 3 : Python dosyanıza şu kodları ekleyin :

import ifcfg
import json

for name, interface in ifcfg.interfaces().items():
    print (interface['device'])
    print (interface['inet'])       
    print (interface['inet4'])       
    print (interface['inet6'])
    print (interface['netmask'])

Kaynak : https://pypi.org/project/ifcfg/

Text dosyasini binary olarak acinca okumalar bytes donduruyor, decode etmek gerekiyor.

Text olarak ac, veya daha iyisi komutu popen ile acip ciktisini direkt al.

Edit:
Bi de Windows’ta open bile sorunlu, bir yerlerde encoding filan belirtmek gerekiyordu diye hatirliyorum.

O zaman

with open(“ipconfig.txt”, ‘r’, encoding = "utf-8") as dosya 

Düzeltilmiş halidir.

şeklinde mi olacak?

evet sayın @aib in dediği gibi encoding = "utf-8" kısmını doğru yaptınız ama "rb" yani read-byte olarak dosyayı okuduğunuz için encoding hatası vericektir(hala byte olarak actığınız için). onun yerine "r" (read) kullanmanız yeteli (byte yerine string acmış olursunuz).

1 Beğeni

Teşekkür ederim :slight_smile: Zaten rbnin ne olduğunu bilmiyordum.Düzelttim.

Eğer isterseniz dosya açma kipleri hakkında daha detaylı bilgiler mevcut
https://python-istihza.yazbel.com/temel_dosya_islemleri.html

Tamam problemi çözdüm ben den kaynaklı bir hata imiş
utf-8 de sıkıntı yok