HamzaMcBob Ответов: 0

Справка по ошибке редактирования файлов Python


Пытаюсь написать какой-то код для чтения и редактирования текстового файла на python. но я получаю некоторые действительно странные ошибки, которые не имеют для меня никакого смысла.


import fileinput
import linecache


def GetdataV1(Index,lineindex):#only works for Index3 and 2..every other index it will state "list index out of range"
    #Datafile = open("Trade data/Databaseforbot", "r")
    Linetoget = linecache.getline('Trade data/Databaseforbot', lineindex).split("|")
    Traddetail = Linetoget[Index].split("*")
    print(Traddetail[1])
    return Traddetail[1]






def PostdataV1(index,lineindex,data):#converts all to Hello instead of the specific part we wantot change to Hello
    # all 0's to "Hello"
    with fileinput.FileInput('Trade data/Databaseforbot', inplace=True, backup='.bak') as file:
        Datatoget = linecache.getline('Trade data/Databaseforbot', lineindex).split("|")
        finalvaluechange = Datatoget[index].split("*")
        #finalvaluechange = seperated.split("*")
        print(finalvaluechange[1])
        for line in file:
             print(line.replace(finalvaluechange[1], data), end='')



PostdataV1(3,1,"Hello")


Что я уже пробовал:

Некоторые действительно странные ошибки, которые не делают sense...as как индекс может быть вне списка для 4, но не 3 или 2, когда .split образует 10 различных частей

Также для поста, если вы это сделаете
PostdataV1(3,2)
он должен вернуться
это как файл

1|https://app.libertex.com/products/stock/BA/|3*34#34/4*0/5*0/6*0/7*0/8*0/9*0|CDwindow-76447D5BFE266B666CB3494980C5C4EB
2|https://app.libertex.com/products/stock/BA/|3*23#23/4*Hello|5*0/6*0/7*0/8*0/9*0|CDwindow-76447D5BFE266B666CB3494980C5C4EB

вместо этого он редактирует текстовый файл, чтобы выглядеть следующим образом

1|https://app.libertex.com/products/stock/BA/|3*34#34/4*Hello|5*Hello|6*Hello|7*Hello|8*Hello|9*Hello|CDwindow-76447D5BFE266B666CB349498HelloC5c4eb
2|https://app.libertex.com/products/stock/BA/|3*23#23/4*Hello|5*Hello|6*Hello|7*Hello|8*Hello|9*Hello|CDwindow-76447D5BFE266B666CB349498HelloC5c4eb
где везде, где есть 0, есть и"привет"

Как вы думаете, это как-то связано с тем, что я использую * в качестве сплиттера?

Richard MacCutchan

где везде, где есть 0, есть и"привет"
Это то, что вы сказали ему сделать в очереди:

print(line.replace(finalvaluechange[1], data), end='')

где поле данных-это "привет".

0 Ответов