Запись в файл, открытый в режиме чтения и записи, изменяющий структуру - PullRequest
0 голосов
/ 24 июня 2018

У меня есть текстовый файл со следующим содержимым:

joe satriani is god 
steve vai is god
steve morse is god
steve lukather is god

Я хотел написать код на Python, который изменит строки файла, например:

joe satriani is god ,absolutely man ..
steve vai is god,absolutely man ..
steve morse is god,absolutely man ..
steve lukather is god,absolutely man ..

Я пытался сделать это раньше, и не получил желаемого результата. Итак, сначала я попытался написать код, который бы просто добавлял «абсолютно человек» в конце только первой строки.

Итак, мой код следующий:

jj = open('readwrite.txt', 'r+')

jj.seek(1)
n = jj.read()
print(" yiuiuiuoioio \n") #just for debugging
print(n)

f = n.split("\n" , n.count("\n")) #to see what I am getting
print(f)   #As it turns out read returns the whole content as a string
print(len(f[0])) # just for debugging
jj.seek(len(f[0])) #take it to the end of first line
posy = jj.tell() # to see if it actually takes it 
print(posy)
jj.write(" Absolutely ..man ")

Но при выполнении кода мой файл меняется на следующее:

joe satriani is god Absolutely ..man d
steve morse is god
steve lukather is god

Вторая строка перезаписывается. Как добавить одну строку в конец одной строки?

Я думал об открытии файла в режиме чтения и добавления, но он перезапишет существующий файл. Я не хочу читать строки из этого файла и записывать их в другой файл, добавляя. Как добавить или изменить строки файла?

Есть ли способ сделать это без каких-либо пакетов?

Ответы [ 3 ]

0 голосов
/ 24 июня 2018
given_str = 'absolutely man ..'
text = ''.join([x[:-1]+given_str+x[-1] for x in open('file.txt')])
with open('file.txt', 'w') as file:
    file.write(text)
0 голосов
/ 24 июня 2018

пытался что-то написать с поиском.вы просто переписывали, а не вставляли, поэтому вам придется скопировать конец файла после написания текста

jj = open('readwrite.txt', 'r+')
data = jj.read()

r_ptr = 0
w_ptr = 0
append_text = " Absolutely ..man \n"
len_append = len(append_text)
for line in data.split("\n"): #to see what I am getting
    r_ptr += len(line)+1
    w_ptr += len(line)
    jj.seek(w_ptr)
    jj.write(append_text+data[r_ptr:])
    w_ptr += len_append
0 голосов
/ 24 июня 2018

это решение, если вы хотите записать в тот же файл

  file_lines = []
    with open('test.txt', 'r') as file:
        for line in file.read().split('\n'):
            file_lines.append(line+ ", absolutely man ..")
    with open('test.txt', 'w') as file:
        for i in file_lines:
            file.write(i+'\n')

это решение, если вы хотите записать в другой файл

with open('test.txt', 'r') as file:
    for line in file.read().split('\n'):
        with open('test2.txt', 'a') as second_file:
            second_file.write(line+ ", absolutely man ..\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...