How to get an armature by name in Python and get access to its bones?
"rig" is an Object datablock, bone data however is part of an Armature datablock.

What you are looking for is bpy.data.objects["rig"].data, which is the armature:

# Active object
ob = bpy.context.object

if ob.type == 'ARMATURE':
    armature = ob.data

    for bone in armature.bones:
        print(bone.name)


An armature has two bone collections:


.bones
.edit_bones


Note that .edit_bones are only accessible if the armature is in Edit Mode.
See EditBones, PoseBones, Bone... Bones

There is a third kind of bone data structure for pose bones, which is referenced by the object and not the armature:

bpy.data.objects["rig"].pose.bones