这似乎是一个简单的问题,但我无法通过谷歌搜索和阅读Stackoverflow来解决这个问题。
我的问题是如何在变量上使用try语句并将其附加到列表中?
在下面的示例中,我尝试使用文件列表中的pandas获取索引标签。我想将每个转换为变量,将它们全部附加到列表中并连接它们。然而,我很难理解我如何尝试" parsed_file.loc [" Staff" :" Total Staff"]。copy()",并将其转换为要附加到列表中的变量。
我有点明白,在下面的例子中,我试图在全局范围内使用局部范围变量,这会引发NameError。我可以使用一个函数并在函数中返回变量,但我得到一个' TypeError:无法连接非NDFrame对象'。我试图将变量转换为函数中的DataFrame,但它返回相同的错误。
并非所有文件都有索引标签,因此我使用except:KeyError跳过这些文件,然后打印文件位置。
for file_ in allFiles:
parsed_file = read_workbook(file_)
parsed_file['filename'] = os.path.basename(file_)
parsed_file.set_index(0, inplace = True)
parsed_file.index.str.strip()
try: Staff_ = parsed_file.loc["Staff" : "Total Staff"].copy()
except KeyError:
print(file_)
list_.append(Staff_)
frame = pd.concat(list_)
答案 0 :(得分:1)
try块内的所有内容都将逐行执行,如果发生异常,它将停止执行并跳转到except块。所以我稍微改变了你的代码,如果在执行public class DrawView extends View {
Paint paint;
Path path;
public DrawView(Context context) {
super(context);
init();
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DrawView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
int x = getWidth() / 2;
int y = getHeight() / 2;
path = new Path();
paint.setColor(Color.RED);
paint.setStrokeWidth(20);
paint.setStyle(Paint.Style.FILL);
paint.setShader(new LinearGradient(getWidth(), getHeight(), getWidth(), getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.REPEAT));
// right panel
path.moveTo(x, y);
path.cubicTo(x + 200, y + 10, x + 20, y + 400, getWidth(), y + 400);
//canvas.drawPath(path, paint);
path.lineTo(getWidth(), y + 400 + 100);
path.lineTo(0, y + 400 + 100);
path.lineTo(0, y + 400);
//canvas.drawPath(path, paint);
// left panel
//path.moveTo(x, y);
path.cubicTo(x, y + 400, x - 200, y + 20 , x, y);
canvas.drawPath(path, paint);
canvas.drawPath(path, paint);
}
}
的行上有异常,它就不会执行try块中的其余行。此处的文档介绍了try Python Try Catch
Staff_ = parsed_file.loc["Staff" : "Total Staff"].copy()