Çözüldü Python "Dosya adında uygunsuz karakter bulunuyor"

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Alih001

Hectopat
Katılım
21 Ekim 2021
Mesajlar
179
Çözümler
3
Daha fazla  
Cinsiyet
Erkek
Merhaba. Normalde TXT dosyasının adını büyük ya da küçük harfle denediğim vakit hata vermemesi lazımdı. Nerede hata yaptığıma dair yardımcı olabilir misiniz?

IMG_20220203_192459.jpg


IMG_20220203_192533.jpg
 
Çözüm
Aynı harfler tekrar edildiğinden aynı harfi bir kere sayıyor.
Evet fark ettim.
[CODE title="Son hal"]import getpass
import sys
import datetime

while True:
try:
dosya = input("\"txt\" dosyasının adını giriniz: ")
uygunkarakterler = "abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ "
if len(dosya) > 110:
sys.stderr.write("Dosya adı çok uzun.\n")

cmt = 0
for i in uygunkarakterler:
if i in dosya:
cmt = cmt+ dosya.count(f'{i}')

if (cmt != len(dosya)):
sys.stderr.write("Dosya adında uygunsuz karakter bulunuyor.\n")

except Exception as hata:
hatakaydi = open('hatakaydi.log','a')
zaman = datetime.datetime.now()
kullanici = getpass.getuser()
hatakaydi.write("[{}][{}] {}\n".format(kullanici,zaman,hata))
hatakaydi.close()
sys.stderr.write("Makinede \"{}\" adlı hata oluştu.".format(hata))
break[/CODE]

Şu şekilde düzelttim.

Teşekkürler ama uygunkarakterler değişkenine büyük harfleri yazmadan önce istediğim şekilde çalışıyordu. Büyük harf ekleyince niye bozulmuş olabilir?
Bir bakayım buna da.
Selam, sadece tahminimi söyleyeceğim, dosyanın bulunduğu konumun tamamını kontrol edin, orada uygunsuz bir harf var mı ona bakın. Mesela şunun gibi: C:\users\Rümeysa
 
Artı -1 Eksi
Python:
import getpass
import sys
import datetime

while True:
    try:
        dosya = input("\"txt\" dosyasının adını giriniz: ")
        uygunkarakterler = "abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ "
        if len(dosya) > 110:
            sys.stderr.write("Dosya adı çok uzun.\n")
        elif not uygunkarakterler in dosya:
            sys.stderr.write("Dosya adında uygunsuz karakter bulunuyor.\n")
       
    except Exception as hata:
        hatakaydi = open('hatakaydi.log','a')
        zaman = datetime.datetime.now()
        kullanici = getpass.getuser()
        hatakaydi.write("[{}][{}] {}\n".format(kullanici,zaman,hata))
        hatakaydi.close()
        sys.stderr.write("Makinede \"{}\" adlı hata oluştu.".format(hata))
        break
Aga kaçıncı sınıfsın bilişim okuyorum ileri düzey değilse belki anlarım
9. sınıfım. Şimdilik ileri düzey Python öğrenmeye çalıştığım yok. Ama gelecekte mümkün olursa yazılım mühendisliği düşünüyorum.
 
Hocam hatanızı buldum. Açıklayacağım şimdi. Değişkeninizin içeriği
abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ bu. Bunun direkt içerisinde olmasını istiyorsunuz. Yani ben kullanıcı olarak inputa

abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ apıdsjdsfoadsjpsdfous

yazarsam hata vermez. Siz mahmut yazıyorsunuz. O
abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ bunu arıyor.

Bunun için for kullanıp değişkenin içindeki her harfi döndüren bir değişken atayıp o değişken inputun içinde var mı diye kontrol ettirmeniz gerekiyor.
 
Artı -1 Eksi
Hocam hatanızı buldum. Açıklayacağım şimdi. Değişkeninizin içeriği.
abcçdefghıijklmnoöprsştuüvYZ1234567890_+-abcçdefgğhıijklmnoöprsştuüvyz bu. Bunun direkt içerisinde olmasını istiyorsunuz. Yani ben kullanıcı olarak inputa.

AbcçdefghıijklmnoöprsştuüvYZ1234567890_+-abcçdefgğhıijklmnoöprsştuüvyz apıdsjdsfoadsjpsdfous

Yazarsam hata vermez. Siz mahmut yazıyorsunuz. O
AbcçdefghıijklmnoöprsştuüvYZ1234567890_+-abcçdefgğhıijklmnoöprsştuüvyz bunu arıyor.

Bunun için for kullanıp değişkenin içindeki her harfi döndüren bir değişken atayıp o değişken inputun içinde var mı diye kontrol ettirmeniz gerekiyor.

Teşekkürler ama uygunkarakterler değişkenine büyük harfleri yazmadan önce istediğim şekilde çalışıyordu. Büyük harf ekleyince niye bozulmuş olabilir?
 
[CODE title="Bu şekilde olabilir."]import getpass
import sys
import datetime

while True:
try:
dosya = input("\"txt\" dosyasının adını giriniz: ")
uygunkarakterler = "abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ "
if len(dosya) > 110:
sys.stderr.write("Dosya adı çok uzun.\n")

cmt = 0
for i in uygunkarakterler:
if i in dosya:
cmt = cmt+1

if (cmt != len(dosya)):
sys.stderr.write("Dosya adında uygunsuz karakter bulunuyor.\n")

except Exception as hata:
hatakaydi = open('hatakaydi.log','a')
zaman = datetime.datetime.now()
kullanici = getpass.getuser()
hatakaydi.write("[{}][{}] {}\n".format(kullanici,zaman,hata))
hatakaydi.close()
sys.stderr.write("Makinede \"{}\" adlı hata oluştu.".format(hata))
break[/CODE]

Bu kodumda da aynı harften 2 kere olunca hata veriyor. Sorunu anladım. Editleyip dönüş yapayım.
 
Son düzenleme:
[CODE title="Bu şekilde olabilir."]import getpass
import sys
import datetime

while True:
try:
dosya = input("\"txt\" dosyasının adını giriniz: ")
uygunkarakterler = "abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ "
if len(dosya) > 110:
sys.stderr.write("Dosya adı çok uzun.\n")

cmt = 0
for i in uygunkarakterler:
if i in dosya:
cmt = cmt+1

if (cmt != len(dosya)):
sys.stderr.write("Dosya adında uygunsuz karakter bulunuyor.\n")

except Exception as hata:
hatakaydi = open('hatakaydi.log','a')
zaman = datetime.datetime.now()
kullanici = getpass.getuser()
hatakaydi.write("[{}][{}] {}\n".format(kullanici,zaman,hata))
hatakaydi.close()
sys.stderr.write("Makinede \"{}\" adlı hata oluştu.".format(hata))
break[/CODE]

Sorunu anladım. Editleyip dönüş yapayım.
Aynı harfler tekrar edildiğinden aynı harfi bir kere sayıyor.
 
Aynı harfler tekrar edildiğinden aynı harfi bir kere sayıyor.
Evet fark ettim.
[CODE title="Son hal"]import getpass
import sys
import datetime

while True:
try:
dosya = input("\"txt\" dosyasının adını giriniz: ")
uygunkarakterler = "abcçdefghıijklmnoöprsştuüvyz1234567890_+-ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ "
if len(dosya) > 110:
sys.stderr.write("Dosya adı çok uzun.\n")

cmt = 0
for i in uygunkarakterler:
if i in dosya:
cmt = cmt+ dosya.count(f'{i}')

if (cmt != len(dosya)):
sys.stderr.write("Dosya adında uygunsuz karakter bulunuyor.\n")

except Exception as hata:
hatakaydi = open('hatakaydi.log','a')
zaman = datetime.datetime.now()
kullanici = getpass.getuser()
hatakaydi.write("[{}][{}] {}\n".format(kullanici,zaman,hata))
hatakaydi.close()
sys.stderr.write("Makinede \"{}\" adlı hata oluştu.".format(hata))
break[/CODE]

Şu şekilde düzelttim.

Teşekkürler ama uygunkarakterler değişkenine büyük harfleri yazmadan önce istediğim şekilde çalışıyordu. Büyük harf ekleyince niye bozulmuş olabilir?
Bir bakayım buna da.
 
Çözüm

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Geri
Yukarı