如何修复:在使用run文件(F5)时,sitecustomize.py(anaconda3)中出现KeyError:'__file__'

2024-10-04 03:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的脚本在使用(F9)运行时可以正常工作。当使用(F5)运行它时,它仍然可以工作(所有操作都可以很好地完成),但会产生以下错误:

File "", line 1, in runfile('S:/Fakultaet/MFZ/NWFZ/AGdeHoz/Philipp/Python/Analysis_script.py',wdir='S:/Fakultaet/MFZ/NWFZ/AGdeHoz/Philipp/Python')

File "c:\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 709, in runfile namespace.pop('file')

KeyError: 'file'

我想知道发生了什么事,怎么解决它。在

我读到了一些关于嵌套问题的文章,所以我取出了导入我自己函数的部分和我使用它的部分。错误仍然存在。所以这至少和我自己的功能无关。在

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)个录制过程中播放的声音的规范。 请原谅我,如果它写得很不和谐,我最近刚从Matlab切换过来。 这个脚本是为了在神经科学中应用。在


Tags: inimportdatatimeextensionrootfilesmd