在Python中,将随机True或False追加到每行的末尾

在Python中,将随机True或False追加到每行的末尾,python,bioinformatics,python-3.7,Python,Bioinformatics,Python 3.7,我有一个文本文件,它被组织成行和列。这是该文件的一个示例 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.0

我有一个文本文件,它被组织成行和列。这是该文件的一个示例

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  
我想做的是在每一行的末尾添加一个随机的真或假,最好是在它自己的列中,看起来像这样

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()

但是,当我调用该函数时,它返回一个空白文本文件

您实际上并没有写入该文件。您需要拨打:

f.write(line + "\n")
在您更新该行之后

另外,您不需要调用
e.close()
f.close()
,这就是将上下文管理器
一起使用的优点

最后,使用适当的数据操作库(如
pandas
)可能有一种更好的方法来完成您正在做的事情,但是如果没有关于您为什么这样做的额外上下文,则很难提供更多的见解。

您忘记了
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()
类似(如果不重复):