繁体   English   中英

将标准输出重定向到文件

[英]redirecting stdout to file

在使用pysam模块时,我尝试将stdout重定向到文件,如下所示:

bam=sys.argv[1]
samfile = pysam.AlignmentFile(bam, "rb")
for alignment in samfile:
    reverse=isReverse(alignment.flag)
    if (reverse):
        outfile = pysam.AlignmentFile("-", "w", template=samfile)
        with open('reverse.sam', 'w') as f:
            with (f):
                for s in samfile:
                    print('HEY')
                    outfile.write(s)

虽然将“ print('HEY')”写为reverse.sam,但“ outfile.write(s)”不是。 我应该怎么做才是呢?
谢谢马克

不应该这样吗

for alignment in samfile.fetch() 

是什么

type (alignment)

让? 而您的额外目的是什么

with (f) 

上下文? :)从您发布的内容来看,外部上下文已经没有意义了。

干得好。

bam_file = sys.argv[1]  # or '-' (if reading from stdin) or 'path/to/your/input.bam'
sam_file = 'path/to/your/output.sam'  # or '-' (if writing to stdout) or 'path/to/your/output.bam' (for bam file)

infile = pysam.AlignmentFile(bam_file, "rb")
outfile = pysam.AlignmentFile(sam_file, "w", template=infile)  # or "wb" if writing to bam file

i = 0

for alignment in infile:
    if alignment.is_reverse:
        outfile.write(alignment)
        i += 1

outfile.close()
infile.close()
print("Wrote {} alignments.".format(i))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM