繁体   English   中英

从文件夹中的 every.txt 文件和 output 行中提取特定行到 another.txt

[英]Pull specific line from every .txt file in folder and output lines to another .txt

我有一个 400.txt 文件的文件夹,我试图从目录中的每个文件中取出第六行,并且 output 每一行都放入一个新的singular.txt 文件中,每个文件的第六行一个接一个地在新文件。 例如,我尝试创建的 output 应该如下所示:

**output.txt**
This is the sixth line from 1.txt
This is the sixth line from 2.txt
This is the sixth line from 3.txt

到目前为止,我能够打印出列表中目录中的所有文件,以便对其进行操作:

import os
entries = os.listdir(r'C:/Users/defaultuser/Desktop/UprocScripts')
for entry in entries:
    print(entry)

我已经研究并尝试了readlines()方法的各种组合,但我不确定如何在 400 个文件的整个目录中将它们组合成多个组合。 我仍在努力学习,如果我走在正确的道路上以及如何将它们结合起来,任何想法都会受到赞赏。

如果您想使用for loop遍历文本文件并选择特定行,这是另一种方法。在此代码中,所有.txt文件都在开头获取。

import glob
list_of_txt = glob.glob(r"C:\Users\defaultuser\Desktop\UprocScripts\*.txt")
for textfiles in list_of_txt:
    with open(r"C:\Users\defaultuser\Desktop\UprocScripts\final.txt", 'a+') as final_text_file:
        with open(textfiles, 'r') as textFile:
            for n, line in enumerate(textFile):
                if n+1 == 6: # if it's line no. 6 then write it on your final txt file
                    final_text_file.writelines(line)

另请注意,我在这里使用glob模块。 此外,如果您想在每一行之后添加“from some.txt”,那么只需将最后一行替换为:

final_text_file.write(line.strip() + " from " + textfiles.split('\\')[-1] + "\r\n")

您需要读取每个文件,从每个文件中获取第六行,然后将该行写入 output 文件。

像这样:

import os
entries = os.listdir(r'C:/Users/defaultuser/Desktop/UprocScripts')
for entry in entries:
    with open('output.txt', 'w') as out_file:
        with open(entry) as text_file:
            lines = text_file.readlines()
            target_line = lines[5]  # sixth line
        out_file.write(target_line)

请注意,这确实会读取每个输入文件的完整文件——这可能效率低下。 您可以尝试通过尝试将hint参数用于readlines来解决此问题 - 它接受要读取的近似字节数。 如果您知道每行的 apprx 大小(以字节为单位),您可以传递6 * line_size作为hint来尝试优化读取部分。

您不需要阅读所有文件,您可以只阅读前 6 行,如下所示:

import os
entries = os.listdir(r'C:/Users/defaultuser/Desktop/UprocScripts')
final = []
for entry in entries

# Read the first 6 lines and add the last one (you don't need to read everything):

    with open(entry) as f:
        lines = []
        for _ in range(6):
            lines.append(f.readline())
    final.append(lines[-1])

# And write

with open("final.txt", "r") as f:
   f.writelines(final)
import os


files_list = []
sixth_line_list = []
output_list = []
directory = 'C:\\Users\\defaultuser\\Desktop\\UprocScripts'

for file in os.listdir(directory):
    if file.endswith('.txt'):
        files_list.append(''.join([directory, '\\', file]))

for file in files_list:
    with open(file, 'r') as file_:
        sixth_line_list.append({file: file_.readlines()[5]})

for i in range(0, len(sixth_line_list), 1):
    output_list.append(''.join([sixth_line_list[i].values()[0], ' from ', sixth_line_list[i].keys()[0]]))

with open(''.join([directory, '\\output.txt']), 'w') as output:
    output.writelines(output_list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM