在这个项目中,我必须首先将DNA链转换为补体,我已经成功创建了该函数,但我需要将其结果分配给下一个函数以将其转换为RNA。我目前正在将结果发送到一个文件,并尝试将其导入下一个函数,但它没有提取任何信息,我很感激任何关于我可以去哪里的建议,谢谢!
#open file with DNA strand
df = open('dnafile.txt','r')
#open file for writing all new info
wf = open('newdnafile.txt', 'r+')
#function for finding complementary strand
def encode(code,DNA):
DNA = ''.join(code[k] for k in DNA)
wf.write(DNA)
print('The complementary strand is: ' + DNA)
#carrying out complement function
code = {'A':'T', 'T':'A', 'G':'C', 'C':'G'}
DNA = df.read()
encode(code,DNA)
#function for turning complementary strand into RNA
def final(code, complement):
for k in code:
complement = complement.replace(k,code[k])
wf.write('the RNA strand is: ' + complement + '\n')
print('the RNA strand is: ' + complement)
#carrying out RNA function
code = {'T':'U'}
#following line is where the issue arises:
complement = wf.read()
final(code,complement)
每当我执行此操作时,它会打印出“RNA链是:”并且无法返回任何链。
答案 0 :(得分:0)
问题是,一旦你写入文件,光标就会被设置为文件的末尾,因此它什么也没读。在complement = wf.read()
使用wf.seek(0)
之前它应该有用。
一般情况下,你应该使用像这样的全局文件对象 - 它要求麻烦。此外,除非必须,否则请避免使用r+
,这可能有点棘手。您应该真正将文件的使用包装在with
块中:
例如,在顶部使用:
with open('dnafile.txt', 'r+') as df:
DNA = df.read()
这可确保文件在块结尾处关闭。请注意,您从未关闭过您的文件,这是一个坏习惯(这里不会影响任何事情)。
最后,使用文件在同一脚本中的函数之间进行通信是没有意义的。只需return
来自一个函数的适当值并将其提供给另一个函数。