日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python设计问答器_Python文件包装器,最佳设计?

發(fā)布時間:2025/3/19 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python设计问答器_Python文件包装器,最佳设计? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我需要解析一個特定于域的配置文件,但是在我開始從中提取黃金之前,我想刪除注釋。在

一旦刪除了注釋,我仍然希望能夠使用getline()、seek()和{}之類的東西

(由于刪除了大量的塊,所以在查找時偏移量很小,因為所有解析都封裝在一個解析對象中)

從^{繼承?:

我的第一個想法是創(chuàng)建一個類似MyFile(file)的對象,然后重寫__init__來創(chuàng)建一個self.content字符串,然后用文件訪問覆蓋所有內容。。。但這看起來太棘手了(我在論壇上看到很多人都很難嘗試這個)

委托給file對象?:

創(chuàng)建一個創(chuàng)建file類的MyFile(file)類,并將來自MyFile實例的調用委托給內部的file實例。

如果對MyFile的調用期望返回超出注釋find/replace搜索參數(shù)的返回。。。

例如:getline()對于單行注釋是可以的,但是對于前3行構成單個塊注釋的文件,getline()getline()如果沒有大量雜亂的代碼,getline()就無法工作

(更不用說跟蹤seek()偏移量)

在臨時文件中重新創(chuàng)建?:

最后,我覺得我在解析整個文件時使用了lazy選項,然后將其重新保存為臨時文件。。。然后返回一個文件句柄(下面的演示代碼)import re

import tempfile

FILE_NAME = 'some_file.ldf'

# ideal case

fh = open(FILE_NAME)

# my example

def getHandle(self, filename, mode='r'):

# ----- Remove comments -----

with open(filename, mode=mode) as fh:

content = fh.read()

# remove /* ... */ comment blocks

content = re.sub(re.compile(r'/\*.*?\*/', re.DOTALL | re.MULTILINE), '', content, re.DOTALL | re.MULTILINE)

# remove // ... line comments

content = re.sub(r'//.*', '', content)

# ----- Write to Temporary File -----

fh = tempfile.TemporaryFile()

fh.write(content)

fh.seek(0)

fh = getHandle(FILE_NAME)

更好的設計?:

有人有更好的設計嗎?。。。

或者在這類問題上有一個完全不同的角度。在

總結

以上是生活随笔為你收集整理的python设计问答器_Python文件包装器,最佳设计?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。