verissimo, ho scritto senza ragionare
io comunque le due funzioni le scriverei così

codice:
def my_inserimento(elem, riga):
    # apro il file in lettura
    with open("Testo.txt", "r") as f:
        # salvo i dati
        data = f.readlines()
    if riga >= 1:
        # inserisco la riga
        data.insert(riga - 1, elem + "\n")
        # riapro il file in scrittura
        with open("Testo.txt", "w") as fo:
            # scrivo i nuovi valori
            fo.write("".join(data))
    else:
        print "La riga 0 non esiste, inserisci un valore maggiore"

def my_cancellazione(elem):
    # apro il file in lettura
    with open("Testo.txt", "r") as f:
        # salvo i dati
        data = f.readlines()
    # setto un contatore
    c = 0
    # riapro il file in lettura
    with open("Testo.txt", "w") as fo:
        # scorro i valori
        for d in data:
            # se non trovo elem scrivo...
            if elem not in d:
                fo.write(d)
            # ... altrimenti incremento il contatore
            else:
                c += 1
    if c > 0:
        print "Ho trovato {} occorrenze di {}".format(c, elem)
    else:
        print "Elemento {} non trovato".format(elem)