[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.
