抱歉,如果我在此期間遇到了一些事實錯誤,但自從我在我的學校開始計算課程後,我只編程了大約一年,如果此問題已經在我到處尋找之前回答,但我不知道要尋找什麼。最近我發現了一個遊戲,你可以用注射器注入Python代碼到它,但找到的代碼的唯一方法是使用:試圖在Python中打印模塊中的每個子模塊
import modulename
print dir(modulename)
然後 打印目錄(modulename.submodulename)
這會將該模塊內的所有子模塊打印到遊戲的日誌文件中。使用這種技術,我開發了一個腳本,它在執行時會查找該目錄中的所有子模塊並將它們寫入文件。
import modulename
myfile=open("name.txt","w")
myfile.write("modulename\n")
for a in dir(modulename):
a="modulename"+"."+a
for b in dir(a):
b=a+"."+b
for c in dir(b):
c=b+"."+c
if ".__" in c:
pass
elif "._" in c:
pass
else:
myfile.write(c+"\n")
if ".__" in b:
pass
if "._" in b:
pass
else:
myfile.write(b+"\n")
if ".__" in a:
pass
if "._" in a:
pass
else:
myfile.write(a+"\n")
print "Done"
myfile.close()
不幸的是,當運行過「something.something」時,模塊不存在。這裏是模塊「Random」的一個例子,其中「random.weibullvariate」是一個真正的模塊,但任何東西都超過了第二個「。」。不在隨機子模塊中。
random.weibullvariate.title.translate
random.weibullvariate.title.upper
random.weibullvariate.title.zfill
random.weibullvariate.title
random.weibullvariate.translate.capitalize
random.weibullvariate.translate.center
random.weibullvariate.translate.count
random.weibullvariate.translate.decode
random.weibullvariate.translate.encode
random.weibullvariate.translate.endswith
random.weibullvariate.translate.expandtabs
random.weibullvariate.translate.find
random.weibullvariate.translate.format
random.weibullvariate.translate.index
random.weibullvariate.translate.isalnum
random.weibullvariate.translate.isalpha
random.weibullvariate.translate.isdigit
random.weibullvariate.translate.islower
random.weibullvariate.translate.isspace
random.weibullvariate.translate.istitle
random.weibullvariate.translate.isupper
random.weibullvariate.translate.join
random.weibullvariate.translate.ljust
random.weibullvariate.translate.lower
random.weibullvariate.translate.lstrip
random.weibullvariate.translate.partition
random.weibullvariate.translate.replace
random.weibullvariate.translate.rfind
random.weibullvariate.translate.rindex
random.weibullvariate.translate.rjust
random.weibullvariate.translate.rpartition
random.weibullvariate.translate.rsplit
random.weibullvariate.translate.rstrip
random.weibullvariate.translate.split
random.weibullvariate.translate.splitlines
random.weibullvariate.translate.startswith
random.weibullvariate.translate
正如你所看到的,有些子模塊被放入,不存在於「隨機」中。 我最終找出了問題所在,但我沒有足夠的經驗來解決問題。
的問題是,使用第2行作爲一個例子
for a in dir(modulename):
a="module name"+"."+a
,如果我做了一個 「modulename.submodule」 正如你所看到的「a」是一個字符串,如果我再將「a」放入「dir()」中,則無論子模塊的名稱是什麼,都會返回同樣的結果。
我需要找到一種方法來將子模塊添加到以前的模塊名稱中,使用「。」在沒有把它變成一個字符串之間。
對不起,很長的文章,任何人有任何想法?
也許我錯了你在問什麼,無論如何,你可以通過'__name__'屬性獲得模塊名稱,你可以使用''。'。join([「package」,「subpackage」,「module」 ])'用點加入可變數量的字段。 – Bakuriu
我會試試這個,謝謝。我會回覆,如果我得到任何地方:) – Freshollie
你的意思是這樣嗎? 「for b in dir(」。「。join([modulename,a])):」 – Freshollie