python – Comprobar si existe el archivo en una carpeta

Casi lo tienes. os.listdir() te devuelve una lista, por tanto la comprobación file.__contains__() busca en esa lista. Ya que lo que buscas es la cadena “roll”, sólo te dará True si en la lista hay un elemento que sea esa cadena "roll", y no si ese elemento contiene la subcadena “roll”, que es lo que necesitas.

La solución es iterar por la lista file (que por cierto, mejor llamaríamos files pues contiene en general varios elementos), y mirar si cada uno de los elementos (que será una cadena), contiene la subcadena "roll".

Por cierto que el uso de __contains__() es muy inusual, y lo normal es mirar si subcadena in cadena (internamente el operador in causa que se invoque .__contains__() pero es raro invocarlo explícitamente).

Por tanto la solución que buscas sería:

import os
files = os.listdir('C:/Mi/Ruta')

for file in files:
  if "roll" in file:
     print("ok")
     break
else:
  print("No encontrado")

Observa que el else pertenece al for y no al if. Es una característica propia de python que no existe en otros lenguajes. El else de un bucle se ejecutará sólo si el bucle se agota (y no se ejecutará si se sale de él con break)

También puedes evitar el uso del bucle explícito haciendo uso de la función any() que itera por una serie de booleanos y retorna True tan pronto como encuentre que uno de ellos es True. Juntando esto con una expresión generadora el código puede quedar más limpio (ya que evitas la extraña estructura for...else y el uso del break):

import os
files = os.listdir('C:/Mi/Ruta')

if any("roll" in file for file in files):
  print("Ok")
else:
  print("No se encuentra")