Открыть файл по имени файла

У меня есть каталог текстовых файлов, у которых есть расширение .txt. Моя цель - распечатать содержимое текстового файла. Я хочу иметь возможность использовать подстановочный знак *.txt, чтобы указать имя файла, которое я хочу открыть (я думаю по строкам что-то вроде F:\text\*.txt?), Разделить строки текстового файла, а затем распечатать вывод.

Вот пример того, что я хочу сделать, но я хочу иметь возможность изменять somefile при выполнении моей команды.

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

Я проверил модуль glob ранее, но я не мог понять, как на самом деле что-то делать с файлами. Вот что я придумал, не работаю.

filepath = "F:\irc\as\*.txt"
txt = glob.glob(filepath)

lines = string.split(txt, '\n') #AttributeError: 'list' object has no attribute 'split'
print lines

Ответ 1

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,

Хотя вы проигнорировали мое совершенно прекрасное решение, вы здесь:

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

Ответ 2

Вы можете использовать модуль glob для получения списка файлов для подстановочных знаков:

Файловые подстановки

Затем вы просто выполняете цикл для этого списка, и все готово:

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 answer, I don't have a python interpreter at hand
  for line in f:
    print line,

Ответ 4

Эта проблема возникла только для меня, и я смог исправить ее с помощью чистого python:

Ссылка на документы python находится здесь: 10.8. fnmatch - соответствие шаблону имени файла Unix

Цитата: "В этом примере будут напечатаны все имена файлов в текущем каталоге с расширением .txt:"

import fnmatch
import os

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