[Python Code]Python đọc ghi file text, file ini
Python đọc ghi dữ liệu file text, file ini
đọc ghi là một trong những kỹ thuật cơ bản, được sử dụng rộng rãi và phổ biến trong ngành công nghiệp phần mềm.
File text, file ini là các dạng file cơ bản được sử dụng để thiết lập các thông tin cấu hình cho một phần mềm cơ bản
1. File text cơ bản
a. Đọc các line của file text và in ra màn hình
File text có nội dung như sau.
#phattrienphanmem123az.com def ReadFile(path): with open("data.txt") as F: data = F.read() line_list = data.split("\n") return line_list if __name__ == "__main__": line_list = ReadFile("data.txt") for line in line_list: print(line + str("\n"))
b. Ghi dữ liệu vào file text
#phattrienphanmem123az.com def WriteFile(file_name, data_list): with open(file_name, 'w') as f: for data in data_list: f.write(data) f.write("\n") def main(): list_data = ["lion", "tiger", "monkey"] file_name = "data.txt" WriteFile(file_name, list_data) if __name__ == "__main__": main()
– Nếu file data.txt chưa tồn tại, nó sẽ được tạo mới.
– Thuộc tính w sẽ cho phép ghi mới dữ liệu, nghĩa là nếu data.txt tồn tại vào có dữ liệu, thì nó sẽ bị xóa để ghi lại.
– Nếu muốn ghi đè dữ liệu vào một file đã có sẵn dữ liệu, hãy thay ‘w’ bằng ‘a’
2. File *.ini
a. Đọc file ini
Khi xây dựng các dự án phần mềm, các file *.ini hay *.config
thường được sử dụng để thiết lập các thuộc tính ban đầu cho một phần mềm.
Cấu trúc của một file *.ini như sau.
[Setting Screen]
width = 800
height = 600
color = 0,0,0
grid = 1
[Setting 2D]
lwidth = 2
ltype = 0
color = 255,255,255
Bài toán đặt ra là, chúng ta phải đọc được dữ liệu từ file, và lưu trữ vào các đối tượng dữ liệu được mô hình hóa.
Python sẽ xử lý như sau.
#phattrienphanmem123az.com class Color: iRed = 0 iGreen = 0 iBlue = 0 class SettingScreen: sWidth = 0 sHeight = 0 sGrid = 0 sColor = Color() class Setting2D: lWidth = 0 lType = 0 lColor = Color() class SystemSetting: objScreen = SettingScreen() obj2D = Setting2D() def ReadFileIni(path): sysSetting = SystemSetting() f = open("setting.ini", "r") data = f.read() line_list = data.split("\n") sLable = "" for line in line_list: words = line.split("=") if len(words) == 1: sLable = words[0] continue elif len(words) == 2: sKey = words[0].replace(" ", '') sData = words[1].replace(" ", '') if sLable == "[Setting Screen]": if sKey == "width": sysSetting.objScreen.sWidth = words[1] if sKey == "height": sysSetting.objScreen.sHeight = words[1] if sKey == "grid": sysSetting.objScreen.sGrid = words[1] if sKey == "color": iColor = words[1].split(',') if len(iColor) == 3: sysSetting.objScreen.sColor.iRed = iColor[0] sysSetting.objScreen.sColor.iGreen = iColor[1] sysSetting.objScreen.sColor.iBlue = iColor[2] if sLable == "[Setting 2D]": if sKey == "lwidth": sysSetting.obj2D.lWidth = words[1] if sKey == "ltype": sysSetting.obj2D.lType = words[1] if sKey == "color": iColor = words[1].split(',') if len(iColor) == 3: sysSetting.obj2D.lColor.iRed = iColor[0] sysSetting.obj2D.lColor.iGreen = iColor[1] sysSetting.obj2D.lColor.iBlue = iColor[2] return sysSetting def main(): sysSetting = ReadFileIni("setting.ini") return 0 if __name__ == "__main__": main()
b. Ghi dữ liệu vào file *ini
để ghi dữ liệu vào file với nội dung như dữ liệu đã được đọc ra từ file ở trên, code sẽ như sau
#phattrienphanmem123az.com class Color: iRed = 0 iGreen = 0 iBlue = 0 class SettingScreen: sWidth = 0 sHeight = 0 sGrid = 0 sColor = Color() class Setting2D: lWidth = 0 lType = 0 lColor = Color() class SystemSetting: objScreen = SettingScreen() obj2D = Setting2D() def WriteFileIni(path, data_list): f = open(path, "w") for data in data_list: f.write(data) f.write("\n") def main(): # Init data sysSetting = SystemSetting() sysSetting.objScreen.sWidth = 800 sysSetting.objScreen.sHeight = 600 sysSetting.objScreen.sColor.iRed = 0 sysSetting.objScreen.sColor.iGreen = 0 sysSetting.objScreen.sColor.iBlue = 0 sysSetting.objScreen.sGrid = 1 sysSetting.obj2D.lType = 2 sysSetting.obj2D.lWidth = 0 sysSetting.obj2D.lColor.iRed = 255 sysSetting.obj2D.lColor.iGreen = 255 sysSetting.obj2D.lColor.iBlue = 255 # make string data sKeyScreen = "[Setting Screen]" sWidth = "width = " + str(sysSetting.objScreen.sWidth) sHeight = "height = " + str(sysSetting.objScreen.sHeight) sColor = "color = " + str(sysSetting.objScreen.sColor.iRed) sColor += "," sColor += str(sysSetting.objScreen.sColor.iGreen) sColor += "," sColor += str(sysSetting.objScreen.sColor.iBlue) sGrid = "grid = " + str(sysSetting.objScreen.sGrid) sKey2D = "[Setting 2D]" sLWidth = "lwidth = " + str(sysSetting.obj2D.lType) sLType = "ltype = " + str(sysSetting.obj2D.lType) sLColor = "color = " + str(sysSetting.obj2D.lColor.iRed) sLColor += "," sLColor += str(sysSetting.obj2D.lColor.iGreen) sLColor += "," sLColor += str(sysSetting.obj2D.lColor.iBlue) # make list data_list = list() data_list.append(sKeyScreen) data_list.append(sWidth) data_list.append(sHeight) data_list.append(sColor) data_list.append(sGrid) data_list.append(sKey2D) data_list.append(sLWidth) data_list.append(sLType) data_list.append(sLColor) # call to write file WriteFileIni("setting2.ini", data_list) return 0 if __name__ == "__main__": main()
– dữ liệu sẽ được ghi mới mỗi lần thực hiện gọi hàm WriteFileIni.