【发布时间】:2020-10-22 13:57:49
【问题描述】:
我正在尝试解析大量文件以在一张表中获取一些信息。这是我的脚本:
import pandas as pd
import numpy as np
M1 = pd.DataFrame(Test,columns=['Test'])
for sample in samples:
with open("file/"+sample+".txt") as f:
c=0
tpm=[]
for line in f:
c+=1
# if c==1:
# if line.split('/')[1].split('.')[0]!='abc':
# break
if c>2 and line.startswith('gene'):
try:
return tpm.append(int(line.rstrip().split('\t')[6])/int(line.rstrip().split('\t')[5])*1000)
except ZeroDivisionError:
return 0
M1[Test]=tpm/np.sum(tpm)*1000000
M=M1
M=M.fillna(0)
M.index=M['Test']
M.to_csv('M.xls',index=False,sep='\t')'
如果没有包含 try: 和 except ZeroDivisionError 的行,它可以工作,但我收到 ZeroDivision 错误,结果无法用于下一行。所以我想在 *.txt 文件中遇到 0 时加 0 而不是除法。
在这个脚本中我遇到了'return' outside function 语法错误
我尝试了很多方法,例如在for line in f: 之前添加try 或添加except: pass,但没有奏效。
【问题讨论】:
-
SyntaxError: 'return' outside function你不能捕捉到SyntaxError,你不应该在函数之外有return语句 -
你无法捕捉到 this
SyntaxError,因为它是由解析器引发的,而不是在运行时(为了适当区分解析/编译时间和运行时)。 (例如,exec和eval可以在运行时引发SyntaxErrors,这些都可以被捕获。) -
那条消息有什么不清楚的地方?您没有任何功能,与 try-except 无关。即使你这样做了,那里的返回也会在第一次出现后停止你的循环,所以这不是你想要的,我猜
标签: python