Я хочу иметь возможность добавить определенный символ в свой файл, используя код Python.
Я пытался использовать функции чтения, то есть списки, но они выдавали ошибку «TypeError: 'builtin_function_or_method
».
Я считаю, что это означает, что python не может записать символ в определенное место, используя функцию списка.
Неправильный способ:
файл: 1)5
Код:
while true:
with open ('file','w') as f:
f.writeline[0]=+1
with open ('file','r') as f:
fc = f.read()
print (fc)
Ожидаемый результат:
5,6,7,8,9,10,11,12,13,14,15....
Я предполагал, что эта строка кода будет увеличивать пятерку, пока я не остановлю программу, но вместо этого она отправила код ошибки, описанный ранее. Есть ли способ написать код, чтобы он работал так, как ожидалось?
Всегда ли новый текст имеет ту же длину (в байты), что и старый?
@DavisHerring Ну, это зависит. Если я не добавлю в файл больше информации, он должен остаться прежним, не так ли? Все, что я делаю, это заменяю информацию в файле другим целым числом.
@knh190, исправлено. Я забыл написать "Правда" с большой буквы
Пожалуйста, опишите более подробно данные вашего файла, ваш код и что вы ожидаете??
@ LêTưThành, данные файла предназначены только для представления целого числа, которое необходимо изменить с помощью указанного кода. Выполнение программы должно продолжать зацикливаться и добавлять одно целое значение к «5» в файле. Мой код надеется, что программа увидит «линию записи» и заметит «[]». Он прочитает значение в скобках и увидит, что я хочу изменить индекс 0 на значение, превышающее это (после просмотра «= + 1»). Это помогает прояснить?
@TheFlooBearer, просто дайте нам example input
и example output
(после завершения цикла)
@ LêTưThành, ладно, кажется, я понимаю, что ты имеешь в виду. Перепроверьте это, извините, если я не ясно. Я не совсем уверен, как выразить это словами, я думаю..
@TheFlooBearer вы хотите записать в файл список целых чисел или символов?
@Amiy, я просто хотел бы изменить единственное значение в файле несколько раз, прежде чем закрыть программу
@TheFlooBearer, если вы хотите хранить данные в своем файле и изменять их, то почему бы не использовать форматы, используемые для хранения данных, такие как JSON.
Во-первых, ваш код будет иметь бесконечный цикл:
while True:
У вас есть какая-нибудь контрольная переменная?
Во-вторых, я не думаю, что этот вам подойдет: f.writeline[0]=+1
Я не уверен, что мой рекомендуемый код поможет вам решить вашу проблему, но если он не соответствует вашей идее, пожалуйста, прокомментируйте его.
check = True
# file = '1)5'
add_val = 5
while check:
open('file', 'w').write(add_val + ",")
add_val += 1
if add_val > 20: # condition to break the while loop
check = False
f = open('file','r').read()
print (f)
Хорошо, я упустил одну вещь. Я надеюсь заменить определенный символ в моем файле (В противном случае большое спасибо. Люди обычно не так терпеливы, когда дело доходит до помощи). Например: Содержимое файла:Джону шесть лет Если бы я хотел заменить букву "Дж" в слове "Джон", что бы я сделал? И как бы я сделал это в операторе цикла, если бы переменная изменилась? (Я верю, что Джейкоб сделал хороший кусок кода, так что позвольте мне вернуться к вам по этому поводу)
По сути, вам нужно будет создать функцию для обновления одного символа. Я думаю, это сработает, но я буквально написал это буквально за три минуты, так что будьте осторожны...
def write_at_index(filename,y_pos,x_pos,character):
"""Write a character 'character' at the given index"""
lines = 0 //begin lines outside scope of the with statement.
with open(filename,"r") as file:
lines = file.readlines()
if len(lines)<y_pos:
raise Exception('y pos out of bounds')
if len(lines[y_pos]) < x_pos
raise Exception('x_pos out of bounds')
lines[y_pos][x_pos] = character
with open(filename,"w") as file:
file.writelines(lines)
Если серьезно. Проверьте код, а не просто возьмите его. Обычно я неплохо разбираюсь в python, но файловый ввод-вывод — мое слабое место в каждом языке.
Я сделал, Идея правильная, но я немного исправил код. Я понимаю, что вы пытались сделать
Не могли бы вы отредактировать мой ответ, чтобы включить ваши правки?
Ваш синтаксис неверен, как он может работать? Пожалуйста, исправьте свой пост.