亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - 每次出現特定字符串時將文件拆分為多個文件

Python - 每次出現特定字符串時將文件拆分為多個文件

撒科打諢 2023-04-25 15:18:13
我有一個文件,其中包含多個存儲過程,如下所示。---- Name: abc(character varying); Type: FUNCTION; Schema: schema_name; Owner: ---CREATE FUNCTION schema_name.abc(schema_name character varying) RETURNS opaque    LANGUAGE plpgsql    AS '54:-1', $$    DECLARE a  INT:= 0; b  INT:= 0;BEGIN           END;$$;---- Name: bcd(); Type: FUNCTION; Schema: schema_name; Owner: ---CREATE FUNCTION schema_name.bcd() RETURNS opaque    LANGUAGE plpgsql    AS '-1', $$         DECLARE a  INT:= 0; b  INT:= 0;BEGIN       END;    $$;---- Name: cde(); Type: FUNCTION; Schema: schema_name; Owner: ---CREATE FUNCTION schema_name.cde() RETURNS opaque    LANGUAGE plpgsql    AS '-1', $$         DECLARE a  INT:= 0; b  INT:= 0;BEGIN       END;    $$;我需要把它分成每個以---- Name:此外,各個文件應以架構名稱命名。在這種情況下,文件名應為 abc.sql、bcd.sql、cde.sql..到目前為止我試過這個token = 'CREATE FUNCTION'chunks = []current_chunk = []for line in open('procedures.txt'):   if line.startswith(token) and current_chunk:       chunks.append(current_chunk[:])      current_chunk = []   current_chunk.append(line)   print (current_chunk)chunks.append(current_chunk) 
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

嘗試這個:


import os


path = r"D:\test"


token = '-- Name: '

chunks = {}

current_chunk = []



with open (os.path.join(path, "test.txt"), "r") as myfile:

    data=myfile.readlines()


for line in data:

    if line.startswith(token):

        start = line.find("token")+len(token)

        end = line.find("(")

        schema_name = line[start:end].strip()

        

        current_chunk = []

        current_chunk.append(line)

        chunks[schema_name] = current_chunk

    else:

        current_chunk.append(line)


print (chunks)


for name, storage in chunks.items():

    print(name)

    with open(os.path.join(path, name + '.sql'), 'w') as file:

        file.write(" ".join(storage))

        file.close()


查看完整回答
反對 回復 2023-04-25
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號