Python 从多个文件读取数据,但希望将该数据写入新的文本文件,但文件显示为空

Python 从多个文件读取数据,但希望将该数据写入新的文本文件,但文件显示为空,python,python-3.x,Python,Python 3.x,代码从多个文本文件中读取,到目前为止,我已经将其显示在终端上,但我希望将信息写入文本文件中,但文本文件显示为空白,不知道为什么python是新的,所以还没有理解所有命令 directory = 'C:\Assignments\\CPLfiles\*' test = False start_text = '^GMWE' for filename in glob.glob(directory): with open(filename) as f: with open('fi

代码从多个文本文件中读取,到目前为止,我已经将其显示在终端上,但我希望将信息写入文本文件中,但文本文件显示为空白,不知道为什么python是新的,所以还没有理解所有命令

directory = 'C:\Assignments\\CPLfiles\*'
test = False
start_text = '^GMWE'

for filename in glob.glob(directory):
    with open(filename) as f:
        with open('file.txt', 'w') as f1:
            for line in f:
                #for x in line:
                    if test is False:
                        if re.search(start_text, line.strip()) is not None:
                            x = line.strip()
                            f1.write(x+ '\n')
                            print(x)
                            break


    test = False

我认为你应该把打开文件的顺序改为如下。 问题是,对于打开要读取的每个文件,您也在重新打开要写入的文件,并对其内容进行修改

此外,由于write语句之后的中断,每个文件最多只能写入一行。 如果您打开的最后一个文件与正则表达式不匹配,则最终文件中将不存在任何内容

希望它有意义

directory = 'C:\Assignments\\CPLfiles\*'
test = False
start_text = '^GMWE'

with open('file.txt', 'w') as f1:
    for filename in glob.glob(directory):
        with open(filename) as f:
            for line in f:
                #for x in line:
                    if test is False:
                        if re.search(start_text, line.strip()) is not None:
                            x = line.strip()
                            f1.write(x+ '\n')
                            print(x)
                            break


    test = False

我认为这里的主要问题是您重新打开了globbing中每个文件的file.txt。每次以写入模式打开它时,都会擦除文件。如果在最后一个文件中没有行匹配,则结果将是一个空文件。因此,您的循环应该位于打开此文件的内部。

请更改代码,以便其他人可以编译。另外,当您创建目录路径时,我建议签出:我让文本文件被发送到另一个驱动器,而不是我的C:它将被发送到我的B:驱动器。我真是个白痴,哈哈,谢谢,它成功了