问题描述
“ ./ data”目录中大约有600,000个文本文件。它们都是1行。
我想将它们合并为1个文件,其中每行应用单引号'
括起来。
我编写了如下的python脚本:
#!/usr/bin/env python3
from glob import glob
def main():
files = glob("data/*")
for f in files:
with open(f) as f2:
print("'" + f2.read() + "'")
if __name__ == "__main__":
main()
将其保存为merge.py,我可以使用命令获取合并文件
./merge.py > merged.txt
首先,作为效率测试,我运行将for f in files
替换为for f in files[:10000]
的代码。它在几秒钟内完成。而且我认为,如果我对整个文件运行它(即使用原始的for f in files
行),它将在几分钟内完成。然后,我修改该行并运行它。但即使15分钟后仍未完成。我想知道我打开了另一个终端并运行
while true; do date; wc -l merged.txt; sleep 300; done
根据此命令的输出,我的脚本每5分钟处理大约20k个文件(这比我预期的要小得多),并且进程变慢了。
我的脚本只是反复打开一个文件,在标准输出中写一行,然后关闭文件。据我了解,它是在循环的开始还是经过数十万次处理后都没有区别。
是否有任何使流程变慢的原因?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)