[英]Trying to copy a set of specific strings from many text files in a directory and paste them in a new text file
[英]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.