[英]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.