/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Học Python Qua Ví Dụ #014 Bài Tập - Mail Merge Xử Lý File Trong Python

Yêu Cầu:
Trộn và nối các trường tương ứng trong file ListDevices.csv vào file zbx_export_hosts.xml, cụ thể là mỗi một dòng của file ListDevices.csv điền vào các biến ở các dòng 12, 13, 14, 17, 22 và 27 để tạo file mới có tên zbx_export_hosts_MOI.xml

Nội dung file zbx_export_hosts.xml

Nội dung file ListDevices.csv


Nhận xét: Chúng ta thấy trong file zbx_export_hosts.xml từ dòng 11 cho đến dòng 32 đó là cấu tạo để định nghĩa một host trong file này và cho phép lặp lại. Nên chúng tôi đưa ra đề xuất giải quyết bài toán này là:

1. Tách file ban đầu ra làm 3 file nhỏ: 
- Từ dòng đầu tiên đến dòng thứ 10 là file: zbx_export_hosts_1.xml
- Từ dòng thứ 11 đến dòng thứ 32 là file: zbx_export_hosts_2.xml
- Từ dòng thứ 33 đến hết file là file: zbx_export_hosts_3.xml

2. Thực hiện nối các biến tương ứng theo yêu cầu đề bài và lưu lại với tên file mới là zbx_export_hosts_2EDIT.xml

3. Thực hiện nối 3: zbx_export_hosts_1.xml, zbx_export_hosts_2EDIT.xml, zbx_export_hosts_3.xml thành file zbx_export_hosts_MOI.xml

Thực Hiện:

1. Tách file ban đầu ra làm 3 file nhỏ: 
- Từ dòng đầu tiên đến dòng thứ 10 là file: zbx_export_hosts_1.xml
- Từ dòng thứ 11 đến dòng thứ 32 là file: zbx_export_hosts_2.xml
- Từ dòng thứ 33 đến hết file là file: zbx_export_hosts_3.xml

Code: 
f = open("zbx_export_hosts.xml", "r")
i = 0
cont1 =[]
for pl in f: # đọc cho đến hết file
	if i < 10:
		with open("zbx_export_hosts_1.xml","a") as f1:
			f1.write(pl)
	elif i < 32:
		with open("zbx_export_hosts_2.xml","a") as f2:
			f2.write(pl)
	else:
		with open("zbx_export_hosts_3.xml","a") as f3:
			f3.write(pl)
	i += 1
f.close

2. Thực hiện nối các biến tương ứng theo yêu cầu đề bài và lưu lại với tên file mới là zbx_export_hosts_2EDIT.xml

Code:
'''
định nghĩa list key_word có nội_dung/giá trị là các key word cần thay thế
Vì trong file ListDevices.csv có cột đầu tiên là No. số thứ tự không dùng trong việc thay thế
Nên thêm key No. để biến i trong vòng lặp for dễ hiểu hơn
Key No. sẽ không dùng
'''
key_word = ["No.", "host12","name13","des14","Temp17","Group22","ip_addr27"]

with open ("zbx_export_hosts_2.xml","r") as f:
	noidung = f.read()
	
	with open("ListDevices.csv","r") as fld:
		fld.readline() # bỏ dòng đầu tiên

		for line_dev in fld.readlines(): 
			fiedl_dev = line_dev.split(",")		# tách mỗi dòng thành 1 list	
			noidung_moi = noidung
			for i in range(0,len(key_word),1): 
				
				# thay thế tất cả các key vào nội dung 
				noidung_moi = noidung_moi.replace(key_word[i], fiedl_dev[i])

			# ghi file sau khi thay thế xong, give vào cuối file
			with open ("zbx_export_hosts_2EDIT.xml","a") as wf:
				wf.write(noidung_moi) 


3. Thực hiện nối 3: zbx_export_hosts_1.xml, zbx_export_hosts_2EDIT.xml, zbx_export_hosts_3.xml thành file zbx_export_hosts_MOI.xml

Code:
#định nghĩa list gồm tên của file cần nối vào file mới
files_list = ["zbx_export_hosts_1.xml", "zbx_export_hosts_2EDIT.xml","zbx_export_hosts_3.xml"]

with open ("zbx_export_hosts_MOI.xml","a") as wf:
	for i in range(0,len(files_list),1):
		
        with open (files_list[i],"r") as rf:
			content = rf.read()
			wf.write(content)


Tham khảo file sau khi nối zbx_export_hosts_MOI.xml

Xong!

No comments:

Post a Comment

/*header slide*/