Python 正在读取C:\\files中的所有.txt文件\\

Python 正在读取C:\\files中的所有.txt文件\\,python,Python,我有一个线程,我想循环遍历某个目录(C:\files\)中的所有.txt文件。我需要的只是帮助读取该目录中的任何.txt文件。我似乎想不出来。。以下是查找特定文件的当前代码: def file_Read(self): if self.is_connected: threading.Timer(5, self.file_Read).start(); print '~~~~~~~~~~~~Thread test~~~~~~~~~~~~~~~'

我有一个线程,我想循环遍历某个目录(C:\files\)中的所有.txt文件。我需要的只是帮助读取该目录中的任何.txt文件。我似乎想不出来。。以下是查找特定文件的当前代码:

def file_Read(self):
    if self.is_connected:
        threading.Timer(5, self.file_Read).start();
        print '~~~~~~~~~~~~Thread test~~~~~~~~~~~~~~~'
        try:
            with open('C:\\files\\test.txt', 'r') as content_file:
                content = content_file.read()
                Num,Message = content.strip().split(';')
                print Num
                print Message
                print Num 
                self.send_message(Num + , Message)
                content_file.close()
                os.remove("test.txt")
                #except 
        except Exception as e:
            print 'no file ', e
            time.sleep(10)
有人对此有简单的解决方法吗?我发现很多线程使用的方法如下:

directory = os.path.join("c:\\files\\","path")
        threading.Timer(5, self.file_Read).start();
        print '~~~~~~~~~~~~Thread test~~~~~~~~~~~~~~~'
        try:
            for root,dirs,files in os.walk(directory):
                for file in files:
                   if file.endswith(".txt"):
                        content_file = open(file, 'r')
但这似乎不起作用


任何帮助都将不胜感激。提前感谢…

如果您需要递归子目录,或者如果您只对单个目录感兴趣,请查看
os.walk
-的手动条目。

我将使用
glob
执行类似操作:

import glob
import os
txtpattern = os.path.join("c:\\files\\", "*.txt")
files = glob.glob(txtpattern)
for f in file:
     print "Filename : %s" % f
     # Do what you want with the file

此方法仅在您希望在目录中而不是在其潜在子目录中读取.txt时有效。

主要问题是,您要在线程中启动的函数的第一件事是使用该函数创建一个新线程

由于每个线程都将启动一个新线程,因此应该有越来越多的线程启动新线程,这似乎也是发生的情况


如果您想在所有文件上做一些工作,并且您想在多核机器上并行地做这些工作(我猜是这样),请查看模块和队列类。但是,在尝试并行化之前,先让文件处理代码工作。

相关线程:为什么第二个代码片段不工作?@MichelKeijzers我不确定,它似乎没有拾取任何文件?“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~线程测试中发生的所有情况都会重复打印出来。您可能希望打印出root、dir、文件甚至文件,以检查程序的迭代内容。