我有一个大文件,命名为例如XXX_USR.txt。我遍历了这个文件夹,其中一些txt文件超过了500MB大。为了避免
MEMORY ERROR
,我需要逐行追加这些文件。然而,我目前的方法太慢了。第一行是由
|SYS
追加的,所有其他行是由
'| ' + amendtext
追加的。替换代码3】是一个变量,它从.txt文件的名称中获取第一个下划线之前的第一个字符串,例如 "XXX"。
File: XXX_USR.txt
INPUT:
| name | car |
--------------
| Paul |Buick|
|Ringo |WV |
|George|MG |
| John |BMW |
DESIRED OUTPUT:
|SYS | name | car |
--------------------
| XXX | Paul |Buick|
| XXX |Ringo |WV |
| XXX |George|MG |
| XXX | John |BMW |
我的代码,太慢了,但胜过内存错误。
import os
import glob
from pathlib import Path
cwd = 'C:\\Users\\EricClapton\\'
directory = cwd
txt_files = os.path.join(directory, '*.txt')
for txt_file in glob.glob(txt_files):
cpath =(Path(txt_file).resolve().stem)
nametxt = "-".join(cpath.split('_')[0:1])
amendtext = "| " + nametxt
systext = "| SYS"
with open(txt_file,'r', errors='ignore') as f:
get_all=f.readlines()
with open(txt_file,'w') as f:
for i,line in enumerate(get_all,1):
if i == 1:
f.writelines(systext + line)
else:
f.writelines(amendtext + line)