在python中通过函数将结果打印到文件中

2024-06-28 21:53:41 发布

您现在位置:Python中文网/ 问答频道 /正文

该程序获取三个文件并比较三个文件中的密钥,并且只打印“AGO1”中明确显示的条目,而不打印其他条目。我可以在控制台上打印结果。请让我知道如何仅通过函数“OnlyArgSeq”的参数将结果写入文本文件“Only_AGO1.txt”

import sys
file1 = sys.argv[1]
file2 = sys.argv[2]
file4 = sys.argv[3]

AGO={}
AGO1={}
AGO2={}
AGO4={}

# Function "ArgSeq" to read each line of Argonoute "file" (Sequence, copy number)
# and put into a dictionary "AGO"
def ArgSeq(AGO,file):
    with open(file) as f:
        for line in f:
            (key, val) = line.split()
            AGO[key] = val

ArgSeq(AGO1,file1) # AGO1 dictionary
ArgSeq(AGO2,file2) # AGO2 dictionary
ArgSeq(AGO4,file4) # AGO4 dictionary


# Function "OnlyArgSeq" to find sRNA loading only to specific ARG
# eg sorting into ARG1, but not ARG2,ARG4
def OnlyArgSeq(AGO, *kwargs):
    only_AGO = {k:v for k,v in AGO.items()
                if not any(k in dicts for dicts in (kwargs))}
    for key in only_AGO.keys():
        print  key, only_AGO[key]

OnlyArgSeq(AGO1, AGO2, AGO4) # sRNA sorting specifically to AGO1, Only_AGO1.txt 

AGO1.txt

AAAAAAAATTGTTGCCGTTGG   1
AAAAAAACTTTGCTTATTTGTTCA    1
AAAAAAATGCTTATTTCAAATCGG    1
AAAAAAATGGGTCGGTTGTTTCA 1
AAAAAAATTGTTGCCGTTGGG   1

AGO2.txt

TTTTTTTTTTCGTCAGTTGGGTTC    1
TTTTTTTTTTGTCAAATTCTG   1
TTTTTTTTTTTCTTTGTCATCCGA    1
TTTTTTTTTTTGTCATCCAAA   1
TTTTTTTTTTTTATGATGTACA  1
AAAAAAATTGTTGCCGTTGGG   2

AGO4.txt

TTTTTTTTGAATATTTTGGTTGG 1
TTTTTTTTGGTAAGCTGTTAA   1
TTTTTTTTTACTGTAGTTTCTT  1
TTTTTTTTTCATGATTTCTTCCTT    2
TTTTTTTTTTAAATATTCTTTTGCCT  3
AAAAAAATTGTTGCCGTTGGG   2

Tags: tokeyintxtonlyfordictionarysys
2条回答

I wanted to put my file name as argument eg: OnlyArgSeq("Only_AGO1.txt"AGO1, AGO2, AGO4). And the output will write into "Only_AGO1.txt"

def myFunc(filename, [other args....]):
    #do some things

    with open(filename, 'w') as fOBJ:
        fOBJ.write(myVariable)

称为:

myFunc("ONLY_AGO1.txt", AGO1, AGO2, AGO3) 

针对您的特定用例

将您的功能更改为以下内容-

def OnlyArgSeq(filename, AGO, *kwargs):
    only_AGO = {k:v for k,v in AGO.items() if not any(k in dicts for dicts in (kwargs))}

    with open(filename) as fp:
        for key in only_AGO.keys():
            #print  key, only_AGO[key]
            fp.write("%s %s" % (key, only_AGO[key]))

相关问题 更多 >