Face edges angle - python
Project into 2D
The verts and edges are wound in order. Knowing the face normal can walk around the edges in a face, using the vector of the &quot;incoming&quot; edge, and vector of &quot;outgoing&quot; edge can calculate the internal angle as as outlined in Finding Internal Angles of a Polygon  Blender winds its faces in a counter-clockwise direction.
IMO other answers  fail to take this into account, see below
Blender has an angle_signed method for 2d vectors.  To use here may require having an arbitrary &quot;Greenwich&quot; point as a reference.

If not colinear, The three verts of the 2 edges form a plane

The corner of 2 edges is the middle vert (b) Subtract
this from other vert of each edge (new origin)

The cross product of the two edges is the axis of rotation (normal to
plane)

Change the space to project (rotate) corner plane into XY plane to represent the corner edges as 2D xy vectors.


Test script. By way of point of difference have used an edit mode bmesh. In edit mode, select the faces you wish to see the internal angles of, then run script.
import bpy
from mathutils import Matrix, Vector
from bpy import context
from math import degrees, atan2, pi
import bmesh
# project into XY plane, 
up = Vector((0, 0, 1))

ob = context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)
def edge_angle(e1, e2, face_normal):
    b = set(e1.verts).intersection(e2.verts).pop()
    a = e1.other_vert(b).co - b.co
    c = e2.other_vert(b).co - b.co
    a.negate()    
    axis = a.cross(c).normalized()
    if axis.length &lt; 1e-5:
        return pi # inline vert
    
    if axis.dot(face_normal) &lt; 0:
        axis.negate()
    M = axis.rotation_difference(up).to_matrix().to_4x4()  

    a = (M @ a).xy.normalized()
    c = (M @ c).xy.normalized()
    
    return pi - atan2(a.cross(c), a.dot(c))

selected_faces = [f for f in bm.faces if f.select]
for f in selected_faces:
    edges = f.edges[:]
    print(&quot;Face&quot;, f.index, &quot;Edges:&quot;, [e.index for e in edges])
    edges.append(f.edges[0])
    
    for e1, e2 in zip(edges, edges[1:]):

        angle = edge_angle(e1, e2, f.normal)
        print(&quot;Edge Corner&quot;, e1.index, e2.index, &quot;Angle:&quot;, degrees(angle))

Test run on concave ngon

2x2 grid center vert dissolved. Bottom vert moved to origin making a 270 degree internal angle between edges 5 and 1
Face 0 Edges: [1, 6, 2, 7, 3, 4, 0, 5]
Edge Corner 1 6 Angle: 45.0
Edge Corner 6 2 Angle: 180.0
Edge Corner 2 7 Angle: 90.0
Edge Corner 7 3 Angle: 180.0
Edge Corner 3 4 Angle: 90.0
Edge Corner 4 0 Angle: 180.0
Edge Corner 0 5 Angle: 45.0
Edge Corner 5 1 Angle: 270.0

For file IO consult the python docs. (Or see other answers).
Re other answers, angles when run on ngon above
@lemon
[135.00000034162267, 0.0, 90.00000250447816, 0.0, 90.00000250447816, 0.0, 135.00000034162267, 90.00000250447816]

@MohammadHosseinJamshidi
[45.00000125223908, 90.00000250447816, 180.00000500895632, 90.00000250447816, 180.00000500895632, 90.00000250447816, 180.00000500895632, 45.00000125223908]