01/10/2018, 12:16

Nhờ các anh chị xem giùm câu lệnh Writelines trong Python

Hello,
Em có 1 file text, chứa nội dung kiểu như:

Gage: TRAN
     Start Time: 1 November 2017, 14:00
     End Time: 2 November 2017, 14:00
Gage: D01
       Start Time: 13 September 2017, 05:00
       End Time: 15 September 2017, 07:00
.........

Em dùng Python để thay thế nội dung ngày tháng ở các dòng “Start Time:” với code như sau:

import re

Startdate ="02 Nov 2017, 14:45"

GF = open("C:TempNEW.txt", 'r+')
for line in GF:
	if re.search('^.*Start Time:', line):
		line = re.sub('[0-9]+.*$',Startdate,line)
                #print line
		GF.writelines(line)
GF.close()

Em gặp các lỗi như sau:
1 . Khi print line thì cho kết quả như mong muốn nhưng mở file ra không có gì thay đổi.
2. Thời gian thực thi code rất lâu (khoảng 5p, báo lỗi) và dung lượng file .txt liên tục tang ( gần 10Gb)
Hichic, anh chị giúp em với. Em cám ơn.

Khoa NTA viết 14:17 ngày 01/10/2018
  1. File của bạn khoảng bao nhiêu dòng?
  2. writelines là ghi 1 hoặc nhiều string trong 1 list chứ không có nghĩa là ghi thành dòng.
  3. Tại sao lại vừa đọc vừa ghi cùng một lượt? Hoặc là load dữ liệu lên rồi xử lý xong rồi lưu lại vào đĩa hoặc là lưu vào trong file khác (đừng lười biếng để sinh nhiều lỗi và giúp việc gỡ lỗi trở lên khó khăn, nhé):
import re

Startdate ="02 Nov 2017, 14:45"

GF = open("C:\Temp\NEW.txt", 'r+')
GF_out = open("C:\Temp\NEW_OUT.txt", 'w')
for line in GF:
	if re.search('^.*Start Time:', line):
		line = re.sub('[0-9]+.*$',Startdate,line)
                #print line
	GF_out.writelines(line)
GF.close()
GF_out.close()
AL viết 14:25 ngày 01/10/2018

import re

Startdate =“02 Nov 2017, 14:45”

GF = open(“C:\Temp\NEW.txt”, ‘r+’)
GF_out = open(“C:\Temp\NEW_OUT.txt”, ‘w’)
for line in GF:
if re.search(’^.Start Time:’, line):
line = re.sub(’[0-9]+.
$’,Startdate,line)
#print line
GF_out.writelines(line)
GF.close()
GF_out.close()

  1. File khoảng 2000 dòng bác.
  2. Kết quả lưu trữ vào file khác thì không truy xuất được bằng chương trình khác ạ.
    Cám ơn bác đã giúp đỡ. Em sẽ suy nghĩ them, có thể chuyển thành 1 file tạm nào đó rồi ghi ngược lại.
Bài liên quan
0