Основная идея моей функции: Я пытаюсь реплицировать команду unix «cd ../» (что приводит к выбору родительского каталога), однако я хочу иметь возможность вводить «cd. ./../ "(в качестве аргумента командной строки).Рекурсивный вызов функции
Так что я пытаюсь рекурсивный звонок. Функция найдет, если строка содержит «../», и если это произойдет, вызовите мою функцию upOneDir() (которая эффективно изменит каталог программы на родителя), а затем вызовет себя (dotDotSlash()).
def dotDotSlash():
s = sys.argv[2]
dotDotSlash = "../"
if (s.find(dotDotSlash) == -1):
print "not found"
else:
print "found ../ at: "
print s.find(dotDotSlash)
upOneDir()
dotDotSlash()
Функция выполняется только один раз, когда я пытаюсь войти «CD ../../», а затем дает мне эту ошибку:
Traceback (most recent call last):
File "test3.py", line 59, in <module>
dotDotSlash()
File "test3.py", line 40, in dotDotSlash
dotDotSlash()
TypeError: 'str' object is not callable
Любые идеи о том, почему функция не вызывая себя правильно?
Используйте getopt свой встроенный в него python, который удовлетворит ваши потребности. –
вы назвали свою переменную с тем же именем, что и ваша функция. –
'dotDotSlash =" ../ "' это строка с тем же именем 'def dotDotSlash()' имя переменной переменной или имя funciton. – Nilesh