0

当前脚本在同一文件夹中的两个文件上运行。每次我必须运行不同的情况时,我必须用正确的文件夹(即 11221 而不是 11220)和该文件夹中的正确文件名(即 11221_S1 而不是 11220_S1)替换脚本中的路径并再次运行脚本.

有没有办法让脚本选择 /mypath 中包含的所有文件夹,并在该文件夹中选择脚本运行所需的两个文件?所以我不需要手动替换每个文件的脚本中的文本。

提前谢谢你 卢卡

import sys
infile=open("mypath/11220/11220_S1.vcf")
outfile=open('/mypath/11220/11220_S1.csv', 'w')
outfile2=open('/mypath/11220_S1.txt', 'w') 
    for line in infile:
        data=line.split()
        if data[0] == "#CHROM":
            #print line
            outfile.write(str(data[0]) + '\t' +  str(data[1]) + '\t' +str(data[3]) + '\t' +str(data[4])  + '\t'+ str('SDP') + '\t'+ str('DP') + '\t'+ str('RD') + '\t'+ str('AD') + '\t'+ str('FREQ') + '\t'+ str('PVALUE') +'\t' + '\n')
            outfile2.write(str("chrom") + '\t' +  str("position") + '\n')
        if data[0] == "chr17":
            tag=data[9].split(":")
            #print tag[3]
            outfile.write(str(data[0]) + '\t' +  str(data[1]) + '\t' +str(data[3]) + '\t' +str(data[4])  + '\t'+ str(tag[2]) + '\t'+ str(tag[3]) + '\t'+ str(tag[4]) + '\t'+ str(tag[5]) + '\t'+ str(tag[6]) + '\t'+ str(tag[7]) +'\t'  + '\n')
            outfile2.write(str(data[0]) + '\t' +  str(data[1]) + '\n')

    outfile.close()
    outfile2.close()


infile=open("mypath/11220/11220_S2.vcf")
outfile=open('/mypath/11220/11220_S2.csv', 'w')
outfile2=open('/mypath/11220_S2.txt', 'w') 
    for line in infile:
        data=line.split()
        if data[0] == "#CHROM":
            #print line
            outfile.write(str(data[0]) + '\t' +  str(data[1]) + '\t' +str(data[3]) + '\t' +str(data[4])  + '\t'+ str('SDP') + '\t'+ str('DP') + '\t'+ str('RD') + '\t'+ str('AD') + '\t'+ str('FREQ') + '\t'+ str('PVALUE') +'\t' + '\n')
            outfile2.write(str("chrom") + '\t' +  str("position") + '\n')
        if data[0] == "chr17":
            tag=data[9].split(":")
            #print tag[3]
            outfile.write(str(data[0]) + '\t' +  str(data[1]) + '\t' +str(data[3]) + '\t' +str(data[4])  + '\t'+ str(tag[2]) + '\t'+ str(tag[3]) + '\t'+ str(tag[4]) + '\t'+ str(tag[5]) + '\t'+ str(tag[6]) + '\t'+ str(tag[7]) +'\t'  + '\n')
            outfile2.write(str(data[0]) + '\t' +  str(data[1]) + '\n')

    outfile.close()
    outfile2.close()
4

1 回答 1

1

您可以使用 glob ( https://docs.python.org/2/library/glob.html ) 进行类似 Unix 的选择,而不是对每个文件路径进行硬编码。如何使用 glob 的粗略示例:

import glob
filepath = glob.glob('mypath/11220/*.vcf')[0]
infile = open(logpath, "r")

或者

import glob
filepath = glob.glob('mypath/1122*/*.vcf')[0]
infile = open(logpath, "r")

等等。

祝你好运!

于 2017-11-27T14:02:11.357 回答