Python函数抛出无效语法错误

时间:2016-03-21 23:34:32

标签: python-2.7 pickle

我有一个功能可以解开一些光谱仪数据,这里极为简洁:

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

该函数按照我的意愿工作,除了我只是选项卡/完成文件名而不是在文件扩展名上退格。我不确定为什么我不能将文件名(20160321.pkl)抛入函数本身。我可以创建出现为'20160321.pkl'的字符串,但为什么我不能创建包含扩展名的tab完成文件名的字符串,如下所示?

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

我确信有一个简单的原因,我尚未学习。

1 个答案:

答案 0 :(得分:0)

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

当您正在调用loader(20160321.pkl)时,您会收到语法错误,因为数字中可能包含小数点但后面没有字符(因此允许使用3.5但是<{1}}是不允许的。)

如果要使用扩展名调用它,则需要传入一个字符串:3.abc。您也可以使用单引号(loader("20160321.pkl")),但无论如何您都希望传入字符串。