簡體   English   中英

在 python 中,我應該生成什么代碼來執行“從文件導入 *”?

[英]In python, what code should I generate to do "from FILE import *"?

我正在開發pythonizer ,這是一個將 perl 轉換為 python 的程序,我正在尋找翻譯語句“需要 FILENAME;” 至 python。 在這種情況下,我需要生成“from FILENAME import *”。 我想出了“來自文件名”部分(這里的BASENAME是沒有路徑或擴展名的FILENAME名):

from importlib.machinery import SourceFileLoader
module = SourceFileLoader(BASENAME, FILENAME).load_module()

並且import *部分編碼為:

__import__(name, fromlist=['*'])

但是我該如何組合它們呢?

我在importlib._bootstrap中看到_handle_fromlist ,但在這里調用內部例程很可能不是正確的答案。

這是我關於實現這一點的第二個想法:

[_p, _m] = _prep_import(FILENAME)
sys.path[0:0] = _p
__import__(_m, fromlist=['*'])
sys.path.pop(0)

其中_prep_import()查看 FILENAME(可能是一個表達式),刪除任何擴展名,從中獲取任何路徑信息到第一個結果中,並將基本名稱作為第二個結果。 請注意, FILENAME 可能包含破折號( - ),我相信__import__可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM