該程序獲取三個文件並比較三個文件中的關鍵字,並僅打印那些專門存在於「AGO1」中而不存在於其他中的條目。我可以在控制檯上打印結果。請讓我知道如何通過函數「OnlyArgSeq」的參數將結果寫入文本文件「Only_AGO1.txt」。通過Python中的函數將結果打印到文件中
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
那麼,你想知道如何寫入一個文本文件? – jacoblaw
可能重複[重定向標準輸出到Python中的文件?](https://stackoverflow.com/questions/4675728/redirect-stdout-to-a-file-in-python) – Erich
你要求重定向標準輸出嗎?導入sys並將stdout設置爲文件。之後,你可以這樣做:https://stackoverflow.com/questions/14245227/python-reset-stdout-to-normal-after-previously-redirecting-it-to-a-file – Erich