Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to update text file value in Python

I want to edit/update a specific value in the text file. But in my code, it just adds the value from user's input to the text file and it do not update it at all

Here is my text File. It is composed of (employee number Lastname, First name Position Department Birthdate Rate)

 123456789, Jane, Jane, Manager, ADMIN, 1/1/2000, 1000;
 332244556, Dane, John, Manager, ADMIN, 1/2/1999, 1000;
 234567890, Doe, Jane, Manager, ADMIN, 1/2/1999, 1000;

Here is my code

def updates():
     employee_num = []
     last_name = []
     first_name = []
     emp_possition=[]
     emp_department=[]
     emp_birthdate=[]
     emp_rate = []
     with open("empRecord.txt", 'r+') as files:
         for info in files:
             info = info.strip()
             if len(info) >= 1:
                lists = info.split(',')
                employee_num.append(lists[0].strip())
                first_name.append(lists[1].strip())
                last_name.append(lists[2].strip())
                emp_possition.append(lists[3].strip())
                emp_department.append(lists[4].strip())
                emp_birthdate.append(lists[5].strip())
                emp_rate.append(lists[6].rstrip(';'))


        y = input("Enter Employee number you wish to update Records  ")
        index = employee_num.index(y)
        print('Employee', y + "'s", "Position is:", emp_possition[index])
        changes = input("Enter the new Position of the employee")
        #it just add the input and it does not change the text file
        files.write(f"{changes}")

updates()
like image 223
New Programmer Avatar asked Mar 21 '26 10:03

New Programmer


1 Answers

The contents of the changes variable is being successfully written to the end of the file (although it does not contain a terminating newline character).

However, it is unlikely to be the intended output. To write the modified data to the file in this format, it will be necessary to rewrite the file. Here is an example of how this might be done:

        new_position = input("Enter the new Position of the employee")

        emp_possition[index] = new_position

        files.seek(0, 0)  # go back to start
        files.truncate()

        for index in range(len(employee_num)):
            files.write("{}, {}, {}, {}, {}, {}, {};\n".format(
                employee_num[index],
                first_name[index],
                last_name[index],
                emp_possition[index],
                emp_department[index],
                emp_birthdate[index],
                emp_rate[index]))


like image 156
alani Avatar answered Mar 24 '26 02:03

alani