Люди,Манипулирование файлами Python 2.7
У меня возникли трудности с манипулированием файлами.
Цель: Я разрабатываю скрипт, который должен создавать папки и копировать файлы из источника, сценарий читает пользователю количество месяцев для создания. Сценарий реплицирует файлы, равные количеству месяцев, которые нужно создать, если в 2017 году необходимо изменить строку в файл .txt в каталог.
исходная строка в файле: АНО INICIO DO Estudo 2016 Строка должна быть изменена: АНО INICIO DO Estudo 2017
PS: Файл будет изменен не оригинал, но копия
Можно ли изменить строку из txt-файла?
Что мне нужно:
чтение исходного текста программы и играть в массив идентифицирующую часть строки в массиве изменить строку, если она оказывается частью строки удалить источник файл и написать другое с тем же именем или просто изменить строку (слово в строке) в исходном файле.
FILENAME_NEWAVE = Path of the source file
STRING_DGER = String to be searched
FILE_DATE = Year
Это не работает, вы пишете в исходном файле
def find_word_in_file_dger(FILENAME_NEWAVE, STRING_DGER, FILE_DATE):
f = open(FILENAME_NEWAVE, "r+")
file_array = f.readlines()
for i in file_array:
if i.find(STRING_DGER.encode('utf-8')):
f.write(i)
else:
print ("TO LENDO O ARRAY")
if FILE_DATE == "2016":
continue
else:
i.replace(STRING_DGER, "ANO INICIO DO ESTUDO " + FILE_DATE)
f.write(i)
print("TO ESCREVENDO A LINHA CORRETAMENTE MLK!! ")
return i
f.close()
return False
Вы можете попробовать с somenthig так: 'импорт re' ' кэш = None' 'с открытым ("file.txt"," г "), как F:' ' \t кэш = f.read()' ' new_file = re.sub (STRING_DGER, "АНО INICIO DO Estudo {}" формат (FILE_DATE.), кэш)' ' , если new_file: ' \t' с открытым ("newfile.txt", "w") как f: ' \t \t 'f.write (new_file)' – Rollback
Работает! Но строка, которая существовала в файле, все еще была там, мне нужно удалить строку «2016», которая находится в файле, и поставить «2017» на место. Если 2017 положено 2018 ... –
имеет акцент в файле, появляется это сообщение об ошибке: «UnicodeDecodeError: кодек ascii не может декодировать байт 0xba в позиции 1355: порядковый номер не в диапазоне (128)» –