Python 函数抛出无效语法错误

Python function throwing invalid syntax error

我有一个函数可以解开一些光谱仪数据,在此处以极其简洁的方式复制:

def loader(filename): 
     global lister
     lister = pd.read_pickle(str(filename) + ".pkl")

该函数按照我的意愿工作,除了我宁愿 tab/complete 文件名而不是必须在文件扩展名上退格。我不确定为什么不能将文件名 (20160321.pkl) 直接放入函数本身。我可以创建显示为“20160321.pkl”的字符串,但为什么我不能创建包含扩展名的制表符完成的文件名字符串,如下所示?

    def loader(filename): 
         global lister
         lister = pd.read_pickle(str(filename))

我敢肯定这其中有一个我尚未了解的简单原因。

当您调用 loader(20160321) 时,您实际上传递的是一个整数 (20160321),而不是一个字符串。这就是第一种方法起作用的原因,因为 str(filename) 将该整数转换为字符串,然后在末尾添加 ".pkl"

当您调用 loader(20160321.pkl) 时,您会遇到语法错误,因为数字中可以有小数点,但后面不能有字符(因此 3.5 是允许的,但 3.abc 是不允许的)。

如果你想用扩展名调用它,那么你需要传入一个字符串:loader("20160321.pkl")。您也可以使用单引号 (loader('20160321.pkl')),但在任何情况下您都希望传递一个字符串。