簡體   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