在 Python 中的每行末尾附加随机 True 或 False
Appending random True or False to the end of each line in Python
我有一个按行和列组织的文本文件。这是文件示例
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()
但是,当我调用该函数时,它 returns 是一个空白文本文件。
您实际上并没有写入文件。您需要致电:
f.write(line + "\n")
更新线路后。
此外,您不需要调用 e.close()
或 f.close()
,这是使用上下文管理器的优势 with
。
最后,使用适当的数据操作库(例如 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()
我有一个按行和列组织的文本文件。这是文件示例
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()
但是,当我调用该函数时,它 returns 是一个空白文本文件。
您实际上并没有写入文件。您需要致电:
f.write(line + "\n")
更新线路后。
此外,您不需要调用 e.close()
或 f.close()
,这是使用上下文管理器的优势 with
。
最后,使用适当的数据操作库(例如 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()