python 脚本在 1 分钟后在终端上停止 运行

python script stops running on terminal after 1 minute

我的 python 脚本遇到了问题。我在我的机器上使用 Ubuntu 作为第二个操作系统,并且我编写了一个 python 代码来输出关于某些蛋白质的不同信息。在给我第一个蛋白质的输出后,它在第二个蛋白质的过程中间减慢了很多,并且在某个时候它不再响应。 当我键入 control+c 时,我收到此消息:

Traceback (most recent call last):
File "testPerf.py", line 185, in <module>
uniqueDict(args.input,args.output)

File "testPerf.py", line 73, in uniqueDict

keyName = '%s_%s' %(hmm[i],cassetteId[i])

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/series.py",
line 1071, in __getitem__

result = self.index.get_value(self, key)

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/indexes>>/base.py", line 4708, in get_value

s = getattr(series, "_values", series)

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/series.py", line 562, in _values

停止时的部分代码如下:

 with open(crisprOutputFile, "r") as file1:
            data = pd.read_csv(file1)
            hmm  = data.HMM
            cassetteId = data.cassette_id
            list1 = data.predicted_label
            i = 0
            while i < len(hmm):
                predictedL = list1[i][7:20]
                predictedL =  predictedL.replace( ')','')
                predictedL =  predictedL.replace( ']','')
                predictedL =  predictedL.replace( "'","")
                predictedL =  predictedL.replace( ',','')
                keyName = '%s_%s' %(hmm[i],cassetteId[i])
                if keyName not in dict1:
                    dict1[keyName] = predictedL
                    i+=1

这段代码从名为 crisprOutputFile 的文件中读取内容并尝试在字典中输出一些数据,非常简单... 之后,该词典与其他一些词典相结合,以提供包含蛋白质数据的输出词典。 请帮忙。

在给定的代码段中,如果在 dict1 中找到 keyName,则不会增加 i。 如果i保持不变,则本次迭代将与上一次迭代相同,因此将成为无限循环。

如果您实际上打算在每次迭代时更新 i(这样更有意义),请像这样

降低 i+=1 的集成级别
with open(crisprOutputFile, "r") as file1:
            data = pd.read_csv(file1)
            hmm  = data.HMM
            cassetteId = data.cassette_id
            list1 = data.predicted_label
            i = 0
            while i < len(hmm):
                predictedL = list1[i][7:20]
                predictedL =  predictedL.replace( ')','')
                predictedL =  predictedL.replace( ']','')
                predictedL =  predictedL.replace( "'","")
                predictedL =  predictedL.replace( ',','')
                keyName = '%s_%s' %(hmm[i],cassetteId[i])
                if keyName not in dict1:
                    dict1[keyName] = predictedL
                i+=1

正如评论中@运行-out 所建议的,我建议您使用 for 循环。