【发布时间】:2020-07-21 01:19:25
【问题描述】:
我有一个概念性问题。我是 Python 新手,我正在寻找涉及处理更大日志文件的任务。其中一些可以达到 5 和 6GB
我需要解析一个位置的许多文件。这些是文本文件。
我知道 with open() 方法,最近刚刚遇到了 pathlib。因此,我不仅需要逐行读取文件以提取要上传到数据库的值,还需要获取 Pathlib 为您提供的文件属性并上传它们。
使用 open 和在它下面是否更快,调用一个从中读取文件的路径对象......像这样:
for filename in glob('**/*.*', recursive=False):
fpath = Path(filename)
with open(filename, 'rb', buffering=102400) as logfile:
for line in logfile:
#regex operation
print(line)
还是使用 Pathlib 会更好:
with Path("src/module.py") as f:
contents = open(f, "r")
for line in contents:
#regex operation
print(line)
另外,因为我从来没有使用 Pathlib 打开文件进行阅读。说到这里:Path.open(mode=’r’, buffering=-1, encoding=None, errors=None, newline=None)
换行和错误是什么意思?我假设这里的缓冲和 with open 函数中的缓冲是一样的?
我还看到了这个与路径对象结合使用的装置,虽然它是如何工作的,但我不知道:
path = Path('.editorconfig')
with open(path, mode='wt') as config:
config.write('# config goes here')
【问题讨论】:
-
没有人可以在没有访问您的数据和数据库的情况下为您回答这个问题。我建议安装 ipython/jupyter 并在一小部分数据上使用
%timeit魔术命令 -
@PaulH 一般来说呢?什么通常更快?或者是与 open() 相同的 Path.open()
-
我不知道。我会使用
%timeit魔法来找出答案。 -
您会发现
grep非常适合将文件行与正则表达式匹配,并且由专业人士用 c 语言实现,速度非常快。如果你喜欢它,可以用 python 重新实现,但可以把它当作一种学术追求。
标签: python python-3.x pathlib