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)