Cuando especificas una operación sobre archivos y cadenas, no es bueno usar "archivo" o "arch". Con una sola letra (yo uso la "s") da mil veces mejor resultado.
La verdad "archivo" no es una palabra reservada en python, por lo que no habría problema.Código
s = open("tuarchivo.txt").read() #s = abro el archivo y lo leo s = s.replace('?','!') #s= reemplazar los ? por ! en la cadena "s" f = open("tuarchivo.txt",'w') #f = abro el archivo en modo escritura f.write(s) #escribo la cadena "s", o sea, escribo ! donde haya ? f.close() #Cerramos