最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python如何在文件中部插入信息

 更新時(shí)間:2022年11月02日 15:39:43   作者:逗逗家本逗  
這篇文章主要介紹了python如何在文件中部插入信息問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如何在文件中部插入信息

fp = open('D://代碼開發(fā)//Python.path//jhp//fadd.txt', 'r')           #指定文件
s = fp.read()                   #將指定文件讀入內(nèi)存
fp.close()                      #關(guān)閉該文件
a = s.split('\n')
a.insert(-1, 'a new line')    #在第 LINE+1 行插入
s = '\n'.join(a)                #用'\n'連接各個(gè)元素
fp = open('D://代碼開發(fā)//Python.path//jhp//fadd.txt', 'w')
fp.write(s)
fp.close()

結(jié)果:

"properties":{
        "zookeeper.connect":"zookeeper.com:2015",
        "druid.discovery.curator.path":"/druid/discovery",
        "druid.selectors.indexing.serviceName":"druid/overlord",
        "commit.periodMillis":"12500",
        "consumer.numThreads":"1",
        "kafka.zookeeper.connect":"kafkaka.com:2181,kafka.com:2181,kafka.com:2181",
        "kafka.group.id":"test_dataSource_hod_dd"
a new line
    }

實(shí)現(xiàn)在文本指定位置插入內(nèi)容

1. 場景

生產(chǎn)環(huán)境需要對大量的json文件進(jìn)行寫操作,在指定節(jié)點(diǎn)中插入一個(gè)屬性。如下:

{
    "dataSources":{
        "test_dataSource_hod":{
            "spec":{
                "dataSchema":{
                    "dataSource":"test_dataSource_hod",
                    "parser":{
                        "type":"string",
                        "parseSpec":{
                            "timestampSpec":{
                                "column":"timestamp",
                                "format":"yyyy-MM-dd HH:mm:ss"
                            },
                            "dimensionsSpec":{
                                "dimensions":[
                                    "method",
                                    "key"
                                ]
                            },
                            "format":"json"
                        }
                    },
                    "granularitySpec":{
                        "type":"uniform",
                        "segmentGranularity":"hour",
                        "queryGranularity":"none"
                    },
                    "metricsSpec":[
                        {
                            "name":"count",
                            "type":"count"
                        },
                        {
                            "name":"call_count",
                            "type":"longSum",
                            "fieldName":"call_count"
                        },
                        {
                            "name":"succ_count",
                            "type":"longSum",
                            "fieldName":"succ_count"
                        },
                        {
                            "name":"fail_count",
                            "type":"longSum",
                            "fieldName":"fail_count"
                        }
                    ]
                },
                "ioConfig":{
                    "type":"realtime"
                },
                "tuningConfig":{
                    "type":"realtime",
                    "maxRowsInMemory":"100000",
                    "intermediatePersistPeriod":"PT10M",
                    "windowPeriod":"PT10M"
                }
            },
            "properties":{
                "task.partitions":"1",
                "task.replicants":"1",
                "topicPattern":"test_topic"
            }
        }
    },
    "properties":{
        "zookeeper.connect":"zookeeper.com:2015",
        "druid.discovery.curator.path":"/druid/discovery",
        "druid.selectors.indexing.serviceName":"druid/overlord",
        "commit.periodMillis":"12500",
        "consumer.numThreads":"1",
        "kafka.zookeeper.connect":"kafkaka.com:2181,kafka.com:2181,kafka.com:2181",
        "kafka.group.id":"test_dataSource_hod_dd"
    }
}

需要在最后的properties節(jié)點(diǎn)中添加一個(gè)"druidBeam.randomizeTaskId":"true"屬性。

2. 思路

大概的思路如下:

  • 掃描文件夾下所有需要更改的文件
  • 在文件中確認(rèn)需要更改的位置
  • 插入新的字符

我覺得稍微有點(diǎn)難的地方是在確認(rèn)插入位置的地方。我們知道的是"druid.selectors.indexing.serviceName":"druid/overlord",這個(gè)東西肯定在這個(gè)節(jié)點(diǎn)中,那我只要能找到這個(gè)東西,然后在他的后面 插入就OK了。

好了,思路已經(jīng)有了,寫代碼吧。

#!/usr/bin/python
# coding:utf-8

import os

old_string = '"druid/overlord"'
new_string = ('"druid/overlord",' +
              '\n        ' +
              '"druidBeam.randomizeTaskId":"true",')

def insertrandomproperty(file_name):
    if '.json' in file_name:
        with open(file, 'r') as oldfile:
            content = oldfile.read()
            checkandinsert(content, file)

    else:
        pass

def checkandinsert(content, file):
    if 'druidBeam.randomizeTaskId' not in content:
       # to avoid ^M appear in the new file because of different os
       # we replace \r  with '' 
        new_content = content.replace(old_string, new_string).replace('\r', '')

        with open(file, 'w') as newfile:
            newfile.write(new_content)
    else:
        pass

if __name__ == '__main__':
    files = os.listdir('/home/tranquility/conf/service_bak')
    os.chdir('/home/tranquility/conf/service_bak')
    for file in files:
        insertrandomproperty(file)

就是在內(nèi)存中更新內(nèi)容,然后重新寫回到文件中。代碼只是粗略的表達(dá)了思路,可以根據(jù)需求繼續(xù)修改優(yōu)化。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用PyQt5中QLabel組件實(shí)現(xiàn)亞克力磨砂效果

    利用PyQt5中QLabel組件實(shí)現(xiàn)亞克力磨砂效果

    Windows10 在 UWP 應(yīng)用中支持亞克力畫刷,可以在部件的底部繪制亞克力效果的背景圖。本文將使用QLabel來模擬這個(gè)磨砂過程,感興趣的可以了解一下
    2022-03-03
  • Python入門教程(二十二)Python的類和對象

    Python入門教程(二十二)Python的類和對象

    這篇文章主要介紹了Python入門教程(二十二)Python的類和對象,Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • python matplotlib折線圖樣式實(shí)現(xiàn)過程

    python matplotlib折線圖樣式實(shí)現(xiàn)過程

    這篇文章主要介紹了python matplotlib折線圖樣式實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python小技巧——將變量保存在本地及讀取

    python小技巧——將變量保存在本地及讀取

    這篇文章主要介紹了python小技巧——如何將變量保存在本地及讀取,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • Python實(shí)現(xiàn)自動(dòng)識別數(shù)字驗(yàn)證碼

    Python實(shí)現(xiàn)自動(dòng)識別數(shù)字驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了如何使用Python來自動(dòng)識別數(shù)字驗(yàn)證碼,以便在需要時(shí)自動(dòng)填寫或驗(yàn)證驗(yàn)證碼,有需要的小伙伴可以參考一下
    2024-04-04
  • Python TensorFlow 2.6獲取MNIST數(shù)據(jù)的示例代碼

    Python TensorFlow 2.6獲取MNIST數(shù)據(jù)的示例代碼

    這篇文章主要介紹了Python TensorFlow 2.6獲取MNIST數(shù)據(jù)的的相關(guān)示例,文中有詳細(xì)的代碼示例供大家參考,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • yolov5 win10 CPU與GPU環(huán)境搭建過程

    yolov5 win10 CPU與GPU環(huán)境搭建過程

    這篇文章主要介紹了yolov5 win10 CPU與GPU環(huán)境搭建過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python使用回溯算法實(shí)現(xiàn)列表全排列

    python使用回溯算法實(shí)現(xiàn)列表全排列

    這篇文章主要介紹了python使用回溯算法實(shí)現(xiàn)列表全排列,研究的問題是輸入列表L(不含重復(fù)元素),輸出L的全排列,全排列問題,可以用回溯法解決,需要的朋友可以參考下
    2023-11-11
  • Python新手入門最容易犯的錯(cuò)誤總結(jié)

    Python新手入門最容易犯的錯(cuò)誤總結(jié)

    這篇文章主要總結(jié)了一些關(guān)于Python新手入門最容易犯的錯(cuò)誤,希望通過學(xué)習(xí)本文總結(jié)的十二點(diǎn)易犯錯(cuò)誤點(diǎn),能夠給新手們帶來一定的幫助,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-04-04
  • Python如何獲取對象大小和文件大小

    Python如何獲取對象大小和文件大小

    這篇文章主要介紹了Python如何獲取對象大小和文件大小問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

化州市| 新民市| 乌兰县| 青川县| 黄陵县| 乌鲁木齐市| 神木县| 峨边| 长治市| 城市| 谢通门县| 桐梓县| 双桥区| 万盛区| 许昌县| 泰和县| 丽水市| 太原市| 长宁县| 鹤山市| 康平县| 曲麻莱县| 手机| 登封市| 德惠市| 上林县| 宝坻区| 卫辉市| 固原市| 宿迁市| 广南县| 和林格尔县| 滦平县| 邵阳县| 连山| 宁阳县| 蛟河市| 嘉鱼县| 海原县| 沧州市| 张家港市|