簡體   English   中英

從許多文本文件中復制選擇的行並粘貼到新文件中

[英]Copy select lines from many text files and paste to new file

我是Python的新手,嘗試使用它來完成我認為應該非常簡單的任務。 我有一個包含許多.log文件的文件夾,每個文件都有很多行數據。 我想復制僅包含某個關鍵字的行,然后將每個文件中的每一行粘貼到一個我可以在excel中打開的主文件中。 我一直在尋找答案,但似乎還無法解決任何問題。

這應該做您需要的。 將具有此代碼的文件放在您的.log文件所在的目錄中,將KEYWORD替換為實際要查找的內容,然后運行它。

import os
theKeyword = 'KEYWORD'
directory = '.' 
with open('output.csv', 'w') as out:
    for file in os.listdir(directory):
        if file.endswith(".log"):
            with open(file, 'r') as f:
                for line in f:
                    if theKeyword in line:
                        out.write(line)

根據建議,您可以使用glob代替os.listdir

from glob import glob
with open('output.csv', 'w') as out:
    for file in glob('*.log'):
        with open(file, 'r') as f:
            for line in f:
                if 'KEYWORD' in line:
                    out.write(line)

如果使用fileinput模塊,代碼甚至可以更簡單fileinput

from glob import glob
import fileinput
with open('output.csv', 'w') as out:
    for line in fileinput.input(glob('*.log')):
        if 'KEYWORD' in line:
            out.write(line)

“ Python中的grep”的另一種形式:

from glob import glob
import fileinput
with open('output.csv', 'w') as out:
    out.writelines(line for line in fileinput.input(glob('*.log')) if 'KEYWORD' in line)

在以上代碼段中,如果刪除fileinput.input的參數,則它將處理sys.argv[1:] ,因此您可以使用文件名作為參數來運行腳本。

如果要在目錄的子目錄中遞歸搜索文件,則應查看os.walk函數。

如果您使用的是Linux / Unix / Mac機器,或者如果您在Windows機器上安裝了Cygwin ,則可以使用Shell工具輕松實現上述目的:

$ cat *.log| grep KEYWORD >output.csv
import os

outfile = open("outfile.txt", "w")
temp_list = []
for cur_file in os.listdir("."):
    if cur_file.endswith(".log"):
        for line in open(cur_file, "r").readlines():
            if "KEYWORD" in line:
                outfile.write(line)
outfile.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM