Abrir archivo por nombre de archivo comodín

Tengo un directorio de archivos de texto que todos tienen la extensión .txt . Mi objective es imprimir el contenido del archivo de texto. Deseo poder usar el comodín *.txt para especificar el nombre del archivo que deseo abrir (estoy pensando en algo como F:\text\*.txt ?), Dividir las líneas del archivo de texto, luego imprima la salida.

Aquí hay un ejemplo de lo que quiero hacer, pero quiero poder cambiar somefile al ejecutar mi comando.

 f = open('F:\text\somefile.txt', 'r') for line in f: print line, 

Había revisado el módulo global anteriormente, pero no podía averiguar cómo hacer algo con los archivos. Aquí es lo que se me ocurrió, no funciona.

 filepath = "F:\irc\as\*.txt" txt = glob.glob(filepath) lines = string.split(txt, '\n') #AttributeError: 'list' object has no attribute 'split' print lines 

 import os import re path = "/home/mypath" for filename in os.listdir(path): if re.match("text\d+.txt", filename): with open(os.path.join(path, filename), 'r') as f: for line in f: print line, 

Aunque ignoraste mi perfecta solución, aquí tienes:

 import glob path = "/home/mydir/*.txt" for filename in glob.glob(path): with open(filename, 'r') as f: for line in f: print line, 

Puede usar el módulo glob para obtener una lista de archivos para comodines:

Archivo comodines

Luego simplemente haces un bucle for en esta lista y has terminado:

 filepath = "F:\irc\as\*.txt" txt = glob.glob(filepath) for textfile in txt: f = open(textfile, 'r') #Maybe you need a os.joinpath here, see Uku Loskit's answer, I don't have a python interpreter at hand for line in f: print line, 

Echa un vistazo a “glob – expansión de patrón de ruta de estilo Unix”

http://docs.python.org/library/glob.html

Este problema se me ocurrió y pude solucionarlo con python puro:

El enlace a los documentos de python se encuentra aquí: 10.8. fnmatch – coincidencia de patrón de nombre de archivo Unix

Cita: “Este ejemplo imprimirá todos los nombres de archivos en el directorio actual con la extensión .txt:”

 import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file) 

Este código explica ambos problemas en la pregunta inicial: busca el archivo .txt en el directorio actual y luego le permite al usuario buscar alguna expresión con la expresión regular

 #! /usr/bin/python3 # regex search.py - opens all .txt files in a folder and searches for any line # that matches a user-supplied regular expression import re, os def search(regex, txt): searchRegex = re.compile(regex, re.I) result = searchRegex.findall(txt) print(result) user_search = input('Enter the regular expression\n') path = os.getcwd() folder = os.listdir(path) for file in folder: if file.endswith('.txt'): print(os.path.join(path, file)) txtfile = open(os.path.join(path, file), 'r+') msg = txtfile.read() search(user_search, msg)