Python の変数の値に基づいて、さまざまなインポートを呼び出したいと考えています。
通常、これはswitchステートメントで行うことができますが、残念ながらpythonには何もありません...
それぞれが異なるインポートを含む関数のリストを持つことを考えていましたが、より良い方法はありますか? メソッドと同様の方法でインポートをリストすることは可能ですか? または、モジュール名を文字列としてリストに保存し、インポートに使用できる形式に変換しますか?
ありがとう
Python の変数の値に基づいて、さまざまなインポートを呼び出したいと考えています。
通常、これはswitchステートメントで行うことができますが、残念ながらpythonには何もありません...
それぞれが異なるインポートを含む関数のリストを持つことを考えていましたが、より良い方法はありますか? メソッドと同様の方法でインポートをリストすることは可能ですか? または、モジュール名を文字列としてリストに保存し、インポートに使用できる形式に変換しますか?
ありがとう
プログラムでモジュールをインポートしたい場合は、次のことができます
module = __import__('module_name')
自分自身を見つけるのは奇妙な状況のように思えます.. デザインを確認し、注意して進めてください.
switch
通常、Pythonでは、構造を辞書に置き換えることができます。文字列に格納された名前を使用してモジュールをインポートするには、を使用できますimportlib.import_module()
。次に例を示します。
from importlib import import_module
modlist = {'case 1': ('package1', 'module1'), 'case 2': ('package2', 'module2')}
myvar = 'case 2'
mypackage, mymodule = modlist[myvar]
import_module(mymodule, mypackage)
なぜあなたは使わないのですif
か?
if a is "import_module1":
import module1
elif a is "import_module2":
import module2
私自身のコードの例http://felicitous-desktop.googlecode.com/files/felicitous.py
このスクリプトは、デスクトップの背景を設定します。デスクトップが Windows か Gnome かに応じて、さまざまなライブラリがインポートされます。
if ( platform.system() == "Windows" ):
set_windows_background(dest)
else:
set_gnome_background(dest)
どこ
def set_gnome_background(x):
import gconf
client = gconf.client_get_default()
client.set_string ("/desktop/gnome/background/picture_filename",x)
def set_windows_background(x):
import ctypes
SPI_SETDESKWALLPAPER = 20 # According to http://support.microsoft.com/default.aspx?scid=97142
import tempfile
from PIL import Image
image = Image.open(x)
bmppath= os.path.normpath(os.path.expanduser("~/epic.bmp"))
image.save (bmppath, "BMP")
print bmppath
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, bmppath , 0)