python實(shí)現(xiàn)讀取文件夾下的所有文件的特定內(nèi)容并且重新寫入一個(gè)新文件

問題背景:

想要實(shí)現(xiàn)提取某個(gè)指定目錄下面的所有的文件的特定的內(nèi)容并且寫入到新的文件里面去。文件夾還嵌套有文件夾,要提取的文件內(nèi)容是json格式的。

解決辦法:

針對(duì)第一點(diǎn),首先腳本要實(shí)現(xiàn)判斷是一個(gè)文件夾還是文件,這個(gè)點(diǎn)可以使用os.path.isdir這個(gè)os庫(kù)的函數(shù)來實(shí)現(xiàn),識(shí)別出文件夾之后直接使用os.listdir這個(gè)函數(shù)即可返回一個(gè)由文件名和目錄名組成的列表,剩下的就是拼接出來一個(gè)絕對(duì)路徑,使用python讀出來,再寫入到以時(shí)間戳命名的文件里面去即可。

實(shí)現(xiàn)代碼:

# encoding:utf-8
# 功能:讀取傳入的目錄下所有的文件(包括該目錄下的所有子目錄)的絕對(duì)路徑,并以列表形式返回所有文件的絕對(duì)路徑,最后提取出想要的文件內(nèi)容
# 要求傳入的路徑參數(shù)最后不能有斜杠,目的是為了遞歸時(shí)格式統(tǒng)一

import os
import json
import datetime

def readDir(dirPath):
    if dirPath[-1] == '/':
        print("文件夾路徑末尾不能加/")
        return
    allFiles = []
    if os.path.isdir(dirPath):
        fileList = os.listdir(dirPath)
        # print(fileList)
        for f in fileList:
            f = dirPath+'/'+f
            if os.path.isdir(f):
                subFiles = readDir(f)
                allFiles = subFiles + allFiles #合并當(dāng)前目錄與子目錄的所有文件路徑
            else:
                allFiles.append(f)
        return allFiles
    else:
        return 'Error,not a dir'


def readFile(filePath):
    with open(filePath,'r') as f:
        temp = json.loads(f.read())
        payload = temp['payload']
        # print(payload)
        return payload


if __name__ == '__main__':
    dirPath = 'C:/Users/root/Desktop/poc-framework/output/20190907_104445/webshell'
    fileList = readDir(dirPath)
    for f in fileList:
        nowTime = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
        newName = nowTime + ".aspx"
        fo = open(newName, "w")
        fo.write(readFile(f))
        fo.close()
    print("all sucess!")

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容