Справка по ошибке редактирования файлов 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='')
где поле данных-это "привет".