Добавление случайного True или False к концу каждой строки в Python - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть текстовый файл, который организован в строки и столбцы.Вот пример файла

ATOM      1  N   MET A   0       7.721  14.287  22.993  1.00 56.77           N  
ATOM      2  CA  MET A   0       8.721  15.393  22.939  1.00 56.81           C  
ATOM      3  C   MET A   0      10.044  14.985  23.585  1.00 54.96           C  
ATOM      4  O   MET A   0      11.059  15.660  23.408  1.00 56.23           O  
ATOM      5  CB  MET A   0       8.167  16.640  23.642  1.00 59.72           C  
ATOM      6  CG  MET A   0       7.207  16.349  24.796  1.00 62.33           C  
ATOM      7  SD  MET A   0       5.772  17.459  24.822  1.00 66.48           S  

Что я хочу сделать, это добавить random true или false в конец каждой строки, в идеале в отдельный столбец, что-то, чтовыглядит следующим образом

ATOM      1  N   MET A   0       7.721  14.287  22.993  1.00 56.77           N    True
ATOM      2  CA  MET A   0       8.721  15.393  22.939  1.00 56.81           C    False
ATOM      3  C   MET A   0      10.044  14.985  23.585  1.00 54.96           C    False
ATOM      4  O   MET A   0      11.059  15.660  23.408  1.00 56.23           O    False
ATOM      5  CB  MET A   0       8.167  16.640  23.642  1.00 59.72           C    True
ATOM      6  CG  MET A   0       7.207  16.349  24.796  1.00 62.33           C    False
ATOM      7  SD  MET A   0       5.772  17.459  24.822  1.00 66.48           S    False

Вот функция, которую я написал, чтобы попытаться выполнить это

def random_TF(pdbFileName): #This function will randomly generate TRUE or FALSE
    with open(pdbFileName, 'r') as e:
        with open('1fkqTF.txt', 'w') as f:
            for i, line in enumerate(e):
                line = line.rstrip('\n')
                line += str(random.choice([True, False]))

    e.close()
    f.close()

Однако, когда я вызываю функцию, она возвращает пустой текстовый файл.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

ты забыл f.write(line). Я добавил '\ n' и '\ t' для улучшения форматирования.

def random_TF(pdbFileName): #This function will randomly generate TRUE or FALSE
with open(pdbFileName, 'r') as e:
    with open('text2.txt', 'w') as f:
        for i, line in enumerate(e):
            line = line.rstrip('\n')
            line += '\t' + str(random.choice([True, False])) + '\n'
            f.write(line)

e.close()
f.close()
0 голосов
/ 13 ноября 2018

Вы на самом деле не пишете в файл. Вам нужно позвонить:

f.write(line + "\n")

после обновления строки.

Кроме того, вам не нужно звонить e.close() или f.close(), это преимущество использования диспетчера контекста with.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...