برای مثال شما راه بهتر استفاده از روش زیر هست که اگه مثلا بخواین به جای test2 رشته test1234 یا t4 رو هم قرار بدین مشکلی پیش نیاد و چیزی ناخواسته overwrite نشه یا موارد ناخواسته ای باقی نمونه:
f = open("test.conf", "w")
f.write("test1\ntest2\ntest3")
f.close()
f = open("test.conf", "r+")
search_str = "test2"
replace_str = "test1234"
file_str = f.read()
temp_file_str = file_str.replace(search_str, replace_str)
f.seek(0, 0)
f.truncate(0)
f.write(temp_file_str)
f.close()
در حالت دودویی هم شما به نوعی باید بدونین که اطلاعات به چه شکلی ذخیره شده(مثلا رکورد با طول ثابت) تا مثل مثال آقای nixoeen بتونین دقیقا همون اطلاعات مورد نظرتون رو تغییر بدین. به هر حال اگه اطلاعاتی که می خواین در فایل بنویسین بیشتر یا کمتر از اطلاعات فعلی فایل باشه باید با read فایل رو به صورت کلی یا بخش بخش بخونین و در حافظه اونو تغییر بدین و با truncate فایل اصلی رو از بین ببرین و اطلاعات جدید رو جایگزین کنین یا مثلا مثل دیتابیس ها فایل اصلی رو از بین نبرین و به جاش رکوردهای جدید رو با کلید خاصی در انتهای فایل بنویسین و با استفاده از همون کلید جستجو یا تغییر بدین که در این صورت برای اینکه سرعت زیاد بشه باید با ایندکس گذاری دسترسی رو سریعتر کنین که در اینجا در نهایت می بینین که دارین یه دیتابیس جدید می نویسین که اگه بخواین دیگران هم ازش استفاده کنن یه زبون ساده می خواد که میشه یه چیزی مثل SQL !! یعنی مسائلی که شما الان با اون درگیرین سالهاست که وجود داره و راه حلهای اونهم مشخصه و چیز مسخره ای درش دیده نمیشه!