1. 程式人生 > >python處理多行檔案內容

python處理多行檔案內容

工作中需要切換程式執行環境,於是要改配置檔案內容,便想到了用指令碼實現,便於切換。剛開始用vbs寫的,廢了老大勁還沒做出來,同事說python更好用點,一直也想學習下python,正好這是一次機會。

整個指令碼需要做的事是在檔案中查到需要改的語句後替換為另一語句,還需通過關鍵字找到一行,把接下來的幾行都註釋掉。下面為我實現的python指令碼。

例如檔名為example.txt,放在D盤下。檔案內容如下:

girl

boy

key words

12

start notes

1abc

2abc

end notes

kdjska

通過指令碼執行後希望example.txt內容變成

girl

boy

<!—key words-->

12

<!—start notes-->

<!—1abc-->

<!—2abc-->

<!-end notes-->

kdjska

在example.txt檔案中start notes為第二個一個關鍵字,找到後註釋並註釋後面的3行。

python程式碼如下:

import os
#os 模組提供了一個統一的作業系統介面函式,這些函式通常是平臺指定的,os
#模組能在不同作業系統平臺中的特定函式間自動切換,從而實現跨平臺操作

f=open(r"D:\example.txt","r+")
#字串前面的r說明在字串中的“\”不是轉義字元,代表斜槓本身,r+以讀#寫模式開啟檔案
d = f.read()
#把檔案內容按原樣全部讀到字串d中
if d.find("key words")>=0:
#找到關鍵字
d = d.replace("key words", "<!—key words-->")
f.truncate(0)
#把檔案內容清空
f.seek(0)
#檔案指標指向檔案頭
f.write(d)
f.close()

n1=4
m=0
memoryFile = [] #get these file content
fp=open(r"D:\example.txt","r+")
for line in fp.readlines():  #line break by default
    if(line.find("start notes")>=0 or n1!=4): #find
        line = line.lstrip("\t ")
#去除每行行首空格
        line = "<!--" + line[:-1] + "-->\n"
#去除每行回車鍵加“-->”,再還原回車鍵
        memoryFile.append(line)
        m=m+1
        if m!=4:
            n2=0
        else:
            n2=4
        continue
    memoryFile.append(line)
fp.close()
os.remove(r"D:\example.txt")
newfiles=open(r" D:\example.txt ",'w')
for line in memoryFile:
    newfiles.write(line)
newfiles.close()

請注意,在python中註釋儘量用英文,如果非得用中文請在首行宣告編碼#codeing=utf-8。如果有比較複雜的關鍵字,可以用python的正則表示式很簡單。還有當我們需要替換資料夾下所有目錄中檔案關鍵字時用python也很方便。

相關推薦

python處理檔案內容

工作中需要切換程式執行環境,於是要改配置檔案內容,便想到了用指令碼實現,便於切換。剛開始用vbs寫的,廢了老大勁還沒做出來,同事說python更好用點,一直也想學習下python,正好這是一次機會。 整個指令碼需要做的事是在檔案中查到需要改的語句後替換為另一語句,還需通過關

python處理鍵盤輸入

根據牛客網的說法:https://www.nowcoder.com/discuss/276 import sys try: while True: line1 = sys.stdin.readline().strip() if line1 ==

python處理將csv檔案1內容修改後寫入到csv2檔案

我這裡的方法或許不是很好,主要做法是使用列表和字典進行轉換,感覺很繁瑣,但是也是一種方法。 如果有大神有更好的方法,請留言。 # -*- coding:utf-8 -*- #author:zgd import pandas import csv # with open("url_fea

python刪除檔案內的指定內容

import os datapath = r'F:\mine\data' #待處理的檔案存放目錄 files = os.listdir(datapath) for file in files: with open(r'F:\mine\data'+"\\"+f

Python處理命令參數

ssa getpass 內容 store light nes inpu filename local 1. 將命令行參數保存在列表中,註意argv[0]是程序本身的名字: import sys print(sys.argv)

sed 批量替換檔案內容

格式: sed -i "s/查詢欄位/替換欄位/g" `grep 查詢欄位 -rl 路徑` linux sed 批量替換多個檔案中的字串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如: sed -

10分鐘內教你用Python實現檔案自動上傳到百度雲

一、環境說明 Python 3.7  和 win10系統   二、準備工作 首先我們需要安裝一個包,在cmd命令列介面安裝 bypy包。 pip install bypy 然後安裝成功後,在命令列執行命令 bypy info 會彈出一些類似一下的介

python處理mp3音訊檔案:搜尋靜音(空白)時間

最近在做英語單詞的lrc字幕檔案時,有個需求:需要找出mp3中的靜默起始時間,網上搜索了相關資料,搞了個python實現如下: from pydub import AudioSegment from pydub.silence import detect_silence i

FTPClient 處理檔案時注意新增completePendingCommand

<span style="font-family:Arial, Helvetica, sans-serif;">//樓主之前做一個專案對接,要求用到操作ftp檔案等功能,主要遇到的問題是當要遍歷資料夾裡的檔案時或者下載所有檔案時,如果沒有使用completePe

python處理gz壓縮檔案,解壓並轉化為json

import requests import gzip import json # gz檔案地址 url='https://shilupan-basic-user-pro.oss-cn-shangha

使用Notepad++實現檔案替換的方法--基本方法

直接選擇多行,就可以,notepad是支援的,直接上圖 目標是: 將此圖: 換為此圖: 其實很簡單,如下是選擇,起替換後的效果 find with 和 replace with 都選擇多行資料即可 如果遇到

將目錄及子目錄下檔案內容合併

cat `find $PWD | xargs ls -ld |grep "^-" | awk -F " " '{print $9}'` >> merge.txt find $PWD:查詢當前目錄下所有的檔案與資料夾 xargs:將輸出的輸出的多行內容轉換成一行,也可使用

LINUX下把檔案合併成一行,並組裝成SQL

   先說一下適用的場景,市場部那邊希望看到某些商品中“黃牛”使用者的活動情況,以及“黃牛”使用代金券的情況,然後發一個excel檔案過來,拿到檔案先複製到notepad++中,格式類似: idname price 1name1 price1 2name2 price2 3

合併一個資料夾下檔案內容的單行shell命令

轉載網址:http://www.shangxueba.com/jingyan/1898710.html 合併一個資料夾下多個檔案內容:    複製程式碼程式碼如下:    find -name "*.log" -exec 'cat' {} \; > test.txt

文字內容溢出顯示點點點(...)省略號

wid mov .text 谷歌 鄙視 分享 比較 1.3 con 1、常規css方法——使Firefox以外主流瀏覽器文字溢出省略號表示 下圖為此常用方法在各個瀏覽器下的表現: IE6瀏覽器下 IE7瀏覽器下 chrom

如何用shell一次讀取檔案內容

在寫shell指令碼的時候,因為shell本身的資料結構很簡單,連二維陣列都不能支援,所以配置檔案的形式也不能過於複雜(個人看法,有什麼意見請說),因此需要寫多個配置檔案來滿足業務。 通常情況下,我們用shell讀取一個配置檔案是這樣寫的: while re

Python 處理iOS ipa檔案裡面的.plist

前言 在用python做指令碼的時候,需要操作到iOS打包出來的ipa檔案的plist檔案。 解決方案 1、先寫入本地再讀取 # 讀寫檔案 fp = open("1.plist"

oracle遊標處理記錄

1.查詢工資大於10號部門平均工資的職工資訊 declare cursor cc is select * from emp where sal>(select avg(sal) from emp where deptno=10); ccrec cc%rowtype;

python處理類xml檔案遇到的坑

首先先確定xml檔案有兩個特點容易忽視, 1、xml檔案有且只有一個根節點 2、xml檔案的標籤的屬性都有引號“” 由於對xml檔案不熟,並且對python處理xml檔案不熟,故這兩個坑用了將近一天的時間來填,謹記 說到填坑,要特備感謝一駐馬店的老

python 刪除陣列元素

筆者在專案過程中需要刪除連續的多行陣列,查了好多資料,發現python只能一行一行的刪除,如果刪除連續的多行的話,由於其中指標的變化,會出現後面陣列的指標越界的現象,為此,將資料進行整合,以及給出自己的程式碼 首先先給出刪除多個元素的時候會出現越界現象的原因,這一部分來自y