需要将一个函数的结果中的信息分配给另一个函数的开头

时间:2016-10-25 01:51:27

标签: python function file dictionary

在这个项目中,我必须首先将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链是:”并且无法返回任何链。

1 个答案:

答案 0 :(得分:0)

问题是,一旦你写入文件,光标就会被设置为文件的末尾,因此它什么也没读。在complement = wf.read()使用wf.seek(0)之前它应该有用。

一般情况下,你应该使用像这样的全局文件对象 - 它要求麻烦。此外,除非必须,否则请避免使用r+,这可能有点棘手。您应该真正将文件的使用包装在with块中:

例如,在顶部使用:

with open('dnafile.txt', 'r+') as df:
    DNA = df.read()

这可确保文件在块结尾处关闭。请注意,您从未关闭过您的文件,这是一个坏习惯(这里不会影响任何事情)。

最后,使用文件在同一脚本中的函数之间进行通信是没有意义的。只需return来自一个函数的适当值并将其提供给另一个函数。