Çözüldü Loop ile import nasıl yapılır?

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

DeathForYou

Kilopat
Katılım
28 Mayıs 2018
Mesajlar
86
Daha fazla  
Sistem Özellikleri
Intel(R) Core(TM) i3-4130 | 8 Gb DDR3 1600MHZ
Cinsiyet
Erkek
Merhaba arkadaşlar Python ile küçük bir proje yapıyorum kendime.
Önceden JavaScript ile Discord botu yapmıştım ve JavaScript ile "require" komutu ile tek seferde birden fazla dosyayı require edebiliyordum.
Örnek:

JavaScript:
const examp = require(`dosya.${içerik}.js`)

Bunun Python ile bir yolu var mı?
 
Son düzenleyen: Moderatör:
Çözüm
Commandsmodules[modul] = importlib. İmport_module(modul)
~~~~~~~~~~~~~~~^^^^^^^
Typeerror: List indices must be integers or slices, not str.
Şöyle bir hata aldım.
Benim hatam. List olarak tanımlayıp dictionary olarak kullanmak istemişim.

[ ve ] leri { ve } ile güncelleyerek moduller değişkenini dictionary yapın.

ve append kullanamazsınız dictionary de. O yüzden:
commandsModules.append(belgeName.rstrip('.py')) Burası da şöyle olacak: commandsModules[belgeName.rstrip('.py')] = ""
Modül import edilmedi demek oluyor bu. Loop döngüsüne print koyun bakalım çalışıyor mu?

"init()" çıkarıp print koyduğumda evet "commandsModules" obje/array e ekliyor

1686518026354.png
 
Python:
commandsModules = {}
belgeName = ""

def wr():
    global belgelen
    global belge
    commands = os.scandir("./commands")

    for belge in commands:
        belgeName = belge.name
        belge = [belge.name]
        belgelen = len(belge)
        if belgeName.endswith('.py'):
            belgeName = belgeName.rstrip('.py')
            commandsModules[belgeName] = ""
            commandsModules[belgeName].init()"
            print(commandsModules)



wr()
print(commandsModules)
for modul in commandsModules:
    commandsModules[modul] = importlib.import_module(modul)

Kod şu şekilde. @Nizel G

init() ve doit() kısmını ben havadan sudan örnek vermiştim. Kullanmamalısınız.

Kodun son hali diye paylaştığınızın çalışması lazım aslında. Bir sorun yok.

Bilgisayara geçince test edeyim hemen. Şu an müsait değilim. Bu süre zarfında en son kodu paylaşır mısınız?

Tamam kodun çalışma şeklini anladım teşekkür ederim eklediğim gibi çalışıyor, dediğiniz gibi "init()" gerek yok çok teşekkür ederim zaman ayırdığınız için.

Verdiğiniz kod sorunsuz çalışıyor 🙂
 
Son düzenleme:
Python:
commandsModules = {}
belgeName = ""

def wr():
    global belgelen
    global belge
    commands = os.scandir("./commands")

    for belge in commands:
        belgeName = belge.name
        belge = [belge.name]
        belgelen = len(belge)
        if belgeName.endswith('.py'):
            belgeName = belgeName.rstrip('.py')
            commandsModules[belgeName] = ""
            commandsModules[belgeName].init()"
            print(commandsModules)



wr()
print(commandsModules)file:///home/tux/Yeni Klasör.zip
for modul in commandsModules:
    commandsModules[modul] = importlib.import_module(modul)

Kod şu şekilde. @Nizel G
Bilgisayardan bakınca görülüyor hatalar :D işaretleyeyim hemen.
commandsModules[belgeName].init()"
Syntax error olması bir yana daha import etmediğimiz bir şeyden fonksiyon çağırmaya çalıştık. Bu satırı siliniz.
commandsModules[modul] = importlib.import_module(modul)
Ana dizinden import etmeye çalışcak burası. Şu şekilde güncelleyin:
Python:
    commandsModules[modul] = importlib.import_module("commands."+modul)


Çalışan mini örneği aşağıda bulabilirsiniz:

Tamam kodun çalışma şeklini anladım teşekkür ederim eklediğim gibi çalışıyor, dediğiniz gibi "init()" gerek yok çok teşekkür ederim zaman ayırdığınız için.
Rica ederim, iyi akşamlar :)
 
Merhaba arkadaşlar Python ile küçük bir proje yapıyorum kendime.
Önceden JavaScript ile Discord botu yapmıştım ve JavaScript ile "require" komutu ile tek seferde birden fazla dosyayı require edebiliyordum.
Örnek:

JavaScript:
const examp = require(`dosya.${içerik}.js`)

Bunun Python ile bir yolu var mı?
from modül import *
 
From modül import *

Hayır demek istediğim o değildi, şöyle söyleyeyim.

JavaScript:
const examp = require(`dosya.${içerik}.js`)

Çok hatırlamıyorum ama bu kodu loop a atayıp tek dosya içindeki tüm dosyaları ben her seferinde yazmadan otomatik bir şekilde require edebiliyordum. Veya örneğin bir kullanıcı bankası var ve her kullanıcı için tek seferde bu kod sayesinde çağırabiliyordum.
 

Technopat Haberler

Yeni konular

Geri
Yukarı