如何修复:KeyError:使用运行文件(F5)时,sitecustomize.py(anaconda3)中的'__file__'

时间:2019-05-29 09:41:44

标签: python spyder

使用(F9)运行以下脚本时,该脚本可以正常运行。当使用(F5)运行它时,它仍然可以工作(所有操作都做得很好),但是会产生以下错误:

  

runfile中的文件“”,第1行('S:/Fakultaet/MFZ/NWFZ/AGdeHoz/Philipp/Python/Analysis_script.py',wdir='S:/ Fakultaet / MFZ / NWFZ / AGdeHoz / Philipp / Python')

     

文件“ c:\ anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,   第709行,在运行文件namespace.pop(' file ')

     

KeyError:'文件'

我想知道正在发生什么以及如何解决。

我阅读了一些有关嵌套问题的内容,因此我取出了导入自己的函数的部分以及使用该函数的部分。该错误仍然存​​在。因此,至少与我自己的功能无关。

from IPython import get_ipython
get_ipython().magic('%reset -f')
import time
tic = time.time()
import sys
import os
import pickle
import CSC_getdata_timestamps

General_folder = 'Data' #where processed data will be saved
filename_extension =  '_Sleep_auditory'; #file extension name
Database_name = 'mydata.obj' #name of database
ExpDates = 'ExpDates.obj' #name of object containing all experimental 
dates
root = r"S:\Fakultaet\MFZ\NWFZ\AGdeHoz\Philipp" #root directory (data 
location)
AnalyType = "LFP" #"SP" Local field potential or Spike analysis
spr = 30000 #sample rate
Cname = "CH"
file_md = open(r"S:\Fakultaet\MFZ\NWFZ\AGdeHoz\Philipp\Data\Database\\" + 
           Database_name, "rb")
md = pickle.load(file_md)
file_ExpDates = 
open(r"S:\Fakultaet\MFZ\NWFZ\AGdeHoz\Philipp\Data\Database\\" + 
                 ExpDates, "rb")
ExpDates = pickle.load(file_ExpDates)

for mi, expdates in enumerate(ExpDates):

    day = expdates
    mouse = md[expdates]['mouse']
    files = md[expdates]['rectime']
    filesm = md[expdates]['FRAm'] + md[expdates]['REMm'] + md[expdates] 
    ['SWSm'] + md[expdates]['awakem']
    rect = md[expdates]['rect']
    filest = [md[expdates]['FRAt'], md[expdates]['REMt'], md[expdates] 
    ['SWSt'], md[expdates]['awaket']]
    channels = md[expdates]['channels']


    for f, files_m in enumerate(filesm):

        try:
            if len(files) == 1:
                recname = files
            else:
                tfiles = []
                tfilesm = []
                for i, file in enumerate(files):
                    tfiles.append(int(files[i][0:2]) * 60 + int(files[i] 
                    [3:5]))

                tfilesm = int(files_m[f][0:2]) * 60 + int(files_m[f] 
                [3:5])
                recidx = [i for i in range(len(tfiles)) if tfiles[i] < 
                tfilesm]
                recname = files[recidx[-1]]

            TS0 = (int(rect[0:2]) * 3600 + int(rect[3:5]) * 60 + 
            int(rect[6:8])) * spr
            TS1 = TS0 + (int(filest[f][0][0:2]) * 3600 + int(filest[f][0] 
            [3:5]) * 60 + int(filest[f][0][6:8])) * spr
            TS2 = TS0 + TS1 + (int(filest[f][1][0:2]) * 3600 + 
            int(filest[f][1][3:5]) * 60 + int(filest[f][1][6:8])) * spr
            TS = [TS1, TS2]

            savename = files_m[0:2] + "-" + files_m[3:5]

            if AnalyType == "LFP":
                if not os.path.exists(root + "\Data\Raw" + 
                filename_extension + "\LFP\\" + day):
                    os.makedirs(root + "\Data\Raw" + filename_extension + 
                    "\LFP\\" + day)
                else:
                    print("Directory already exists.")

            elif AnalyType == "SP":
                if not os.path.exists(root + "\Data\Raw" + 
                filename_extension + "\SP\\" + day):
                    os.makedirs(root + "\Data\Raw" + filename_extension + 
                    "\SP\\" + day)
                else:
                    print("Directory already exists.")
            else:
                sys.exit("Invalid type of analysis. Check variable 
                AnalyType.")


            varlist, trseq, trlength, stlength, ntrials, datacscini, 
            samplefreq, tscsc, tstrig = 
            CSC_getdata_timestamps.CSC_getdata_timestamps(root, day, 
            savename, recname, channels, AnalyType, TS)

            print(trseq)




        except Exception as e:
            print('Error: ' + str(e))
            print('mi = {}, f = {}'.format(mi, f))

toc = round(time.time() - tic, 2)
print("elapsed time:", toc, "seconds")

整个脚本是将(1)书面数据库中的数据与(2)数据帧组合在一起,该数据帧包括在(3)录音期间播放的声音的规范。 原谅我,如果它写的是非常非Python的,我最近刚从Matlab切换过来。 该脚本适用于Neuroscience中的应用。

1 个答案:

答案 0 :(得分:0)

(此处为 Spyder维护程序)此错误已在我们的最新版本( 3.3.4 )中得到修复。请通过打开Anaconda提示符并在其中运行来进行更新

conda install spyder=3.3.4