Ajuda em script

Como faço para retornar as notas da função cadastrar, para a calcular a media dentro da função listar_notas?

import subprocess
def cadastrar():
nota1 = float(input("Nota I: "))
nota2 = float(input("Nota II: "))
nota3 = float(input("Nota III: "))
nota4 = float(input("Nota IV: "))

arquivo = open('teste.txt', 'a')
arquivo.write('{},{},{},{}\n'.format(nota1, nota2, nota3, nota4))
arquivo.close()

subprocess.run(["notepad" , "teste.txt"])

def listar_notas():

arquivo = open('teste.txt', 'r')
linhas = arquivo.readlines()
arquivo.close()
print("{:20}{:20}{:20}{:20}".format("Nota I", "Nota II", "Nota III", "Nota IV"))

for linha in linhas:
    nota1, nota2, nota3, nota4 = linha.strip().split(",")
    print("{:20}{:20}{:20}{:20}".format(nota1, nota2, nota3, nota4))

while True:
print(’\n1. Cadastrar Notas’)
print(‘2. Listar Notas | Media’)
print(‘3. Sair’)
opcao = int(input())
if opcao == 1:
cadastrar()
if opcao == 2:
listar_notas()
if opcao == 3:
break

Posso ter entendido errado, mas uma possível solução para imprimir a média seria assim:

def listar_notas():
  arquivo = open('teste.txt', 'r')
  linhas = arquivo.readlines()
  arquivo.close()
  print("{:20}{:20}{:20}{:20}{:20}".format("Nota I", "Nota II", "Nota III", "Nota IV", "Media"))
  for linha in linhas:
      notas = [float(x) for x in linha.strip().split(",")]
      print("{:20}{:20}{:20}{:20}{:20}".format(notas[0], notas[1], notas[2], notas[3], sum(notas) / 4))

Se estiver usando Python 3, aquele print poderia ser assim:

print("{:20}{:20}{:20}{:20}{:20}".format(*notas, sum(notas) / 4))