我試圖爲unix find-command編寫一個小包裝腳本。東西我搞砸了參數傳遞。你能給我一個關於我的錯誤的暗示嗎?Python - 被類和實例變量困惑
的錯誤消息是
Traceback (most recent call last):
File "frep.py", line 43, in <module>
inst.prep_shell_commands(self.extension, self.search_string, self.rel_numbers)
NameError: name 'self' is not defined
這是代碼:
import os
import subprocess
import string
import sys
class Frep(object):
extension = ""
search_string =""
commands = []
rel_numbers = ""
def get_params(self):
Frep.no_of_params = len(sys.argv)
if Frep.no_of_params == 4:
Frep.extension = str(sys.argv[1])
Frep.search_string = str(sys.argv[2])
Frep.rel_numbers = str(sys.argv[3])
else:
print "Usage: frep [FILE_EXTENSION] [SEARCH_STRING] [RELEASE_NUMBERS]"
print "Example: frep sql my_search_string [5-6]"
print " "
sys.exit()
def prep_shell_commands(self, ext, ss, reln):
print ext
tmp_folderlist = string.split(subprocess.check_output("find /data/grep_dir -maxdepth 1 -type d -name '["+reln+"]*'", shell=True), '\n')
#tmp_folderlist = string.split(subprocess.check_output("find /data/grep_dir -maxdepth 1 -type d -name '[6-7]*'", shell=True), '\n')
for d in tmp_folderlist:
commands.append("find " + d + " -type f -name '*" + ext +"' -exec grep -il '" + ss +"' {} \;")
print commands
def exec_commands(self, c_list):
for c in c_list:
os.system(c)
inst = Frep()
inst.prep_shell_commands(self.extension, self.search_string, self.rel_numbers)
exec_commands(self.commands)
'self'只存在於以它爲參數的方法中。你正試圖在其他地方使用它。 – Kevin
所以我如何訪問這個實例的類變量? – royskatt
您不訪問實例的類變量。您可以訪問該類的類變量。有「類變量」和「實例變量」。 「擴展名」是一個類變量,可通過「Frep.extension」進行訪問。 – paidhima