Удаление данных в файле с использованием Python - PullRequest
0 голосов
/ 28 февраля 2020

Как новый программист на Python Языке программирования, я подумал создать студенческую систему управления базами данных на Python. Но при удалении данных из файла я застрял и подумал применить эти шаги к файлу, чтобы удалить символы, но как мне это реализовать? Я разработал свой код, но он не работает.

Алгоритм:

ШАГ 1. Создайте дополнительный файл и откройте текущий файл в режиме чтения и откройте новый файл в режиме записи

ШАГ 2: Считайте и скопируйте Данные во вновь созданный файл, за исключением строки, которую мы хотим удалить

ШАГ 3: Закройте оба файла и удалите старый файл и переименуйте вновь созданный файл с помощью удаленное имя файла

Но при его реализации я застрял на том, как реализовать, поскольку оно не осталось прежним.

Вот код, который я написал:

def delete():
    rollno = int(input('\n Enter The Roll number : '))
    f = open('BCAstudents3.txt','r')
    f1 = open('temp.txt','a+')
    for line in f:
        fo = line.split()
        if fo:
            if fo[3] != rollno:
                f1.write(str(str(fo).replace('[','').replace(']','').replace("'","").replace(",","")))
    f.close()
    f1.close()
    os.remove('BCAstudents3.txt')
    os.rename('temp.txt','BCAstudents3.txt')

Данные из исходного файла выглядят так:

Roll Number = 1 Name : Alex Section = C Optimisation Technique = 99 Maths III = 99 Operating System = 99 Software Engneering = 99 Computer Graphics = 99 {Here Line change is present but it is not showing while typing on to stackoverflow } Roll Number = 2 Name : Shay Section = C Optimisation Technique = 99 Maths III = 99 Operating System = 99 Software Engneering = 99 Computer Graphics = 99`

и Resultt после удаления таков:

Roll Number = 1 Name : Alex Section = C Optimisation Technique = 99 Maths III = 99 Operating System = 99 Software Engneering = 99 Computer Graphics = 99Roll Number = 2 Name : Shay Section = C Optimisation Technique = 99 Maths III = 99 Operating System = 99 Software Engneering = 99 Computer Graphics = 99

, и я также хочу поставить запятую после окончания данные Но не имею ни малейшего представления, как это сделать

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Я сделал вашу программу немного проще. Надеюсь, вы можете использовать его:


def delete():   
    line = input("Line you want to delete: ")
    line = int(line)                    
    line -= 1                           

    file = open("file.txt","r")
    data = file.readlines()        
    del data[line]

    file = open("file.txt","w") 
    for line in data:
        file.write(line)

    file.close()   

Может быть, это поможет.

1 голос
/ 28 февраля 2020

Я изменил ваш код, и он должен работать так, как вы хотели. Несколько вещей для рассмотрения:

  1. Ваш оригинальный текстовый файл, кажется, указывает, что для каждого номера броска есть разрывы строк. Я предположил, что с моим ответом.
  2. Поскольку вы читаете текстовый файл, здесь нет целых чисел, поэтому fo [3] никогда не будет совпадать с rollno, если вы преобразуете ввод в int.
  3. Я не был уверен, где именно вы хотели запятую. После каждой строки? Или просто в самом конце.

Я не был уверен, хотите ли вы новых строк для каждого номера броска.

def delete():
    rollno = input('\n Enter The Roll number : ')
    f = open('BCAstudents3.txt','r')
    f1 = open('temp.txt','a+')
    for line in f:
        fo = line.split()
        if fo:
            if fo[3] != rollno:
                newline = " ".join(fo) + ","
                #print(newline)
                f1.write(newline)

    f.close()
    f1.close()
    os.remove('BCAstudents3.txt')
    os.rename('temp.txt','BCAstudents3.txt')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...