Çö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')] = ""
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. Şuan müsait değilim. Bu süre zarfında en son kodu paylaşır mısınız?
 
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


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:
Bilgisayardan bakınca görülüyor hatalar 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
 
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.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…