由于if逻辑错误,函数未返回值

时间:2018-12-13 19:52:43

标签: python python-3.x

使用一个小脚本从给定的绝对路径(可以是Win和linux)中提取文件名。该脚本应该抓取存储路径的文件(每行一个),并使用pathlib提取文件名。但是,pathlib存在路径以斜杠-/或\结束的问题。 我有一个函数“ remove_slash”,该函数应以递归方式删除所有尾随的斜杠。

  • 第一个怪异的问题是它总是进入else块中 相信是由EOL符号引起的
  • 第二,当路径中没有尾部斜杠时,输入“ if” vlock,应该返回格式化的路径,但不会。林 弄乱我的头发,试图找出为什么没有价值 返回。

如果有经验的人可以看一下并指出正确的方向。

有一堆用于调试目的的打印,请丢弃。

ASCIIchars bar=moreASCIIchars/

1 个答案:

答案 0 :(得分:0)

您的remove_slash是递归的,您的递归调用没有返回任何内容。因此,在递归堆栈下的某个位置,将返回正确的字符串,但下一级将不返回任何内容,因此None是实际的返回值。只需在您的else块中添加退货:

def remove_slash(path):
    print(f"Entering with : {path}")
    if path[-1].isalnum():
        print(f"iffffff {path[-1].isalnum()}::::{path[-1]} ::: {path}")
        return path   # **THIS NEVER GETS RETURNED**
    else:
        print(f"else : {path}")
        return remove_slash(path[:len(path)-1])