在声明之前使用变量

spa*_*cup 0 python declaration conditional-statements

我正在写一个Python脚本,我有一个变量声明的问题,这是我的脚本的一部分:

if chromosome :
    if chromosome.group(1) != '1' :
        output.close()
        print str(base)+" bases found in chromosome "+chr_name
        chr_name = chromosome.group(1)
    output = open(current_dir+"/"+name+"3/"+name+".chr"+chromosome.group(1)+".wig", "w")
    output.write("fixedStep chrom=chr"+chromosome.group(1)+" start=1 step=1\n")
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在关闭输出之前在代码中创建它,但事实上,这种情况永远不会发生,因为您无法在创建文件之前输入条件.

我可以做一些脏东西,在我的条件之前打开一个tmp文件,但那不是很优雅.所以我想知道是否有另一种解决方案让Python开心?

编辑:

if chromosome :
    if chromosome.group(1) != '1' :
        print str(base)+" bases found in chromosome "+chr_name
        chr_name = chromosome.group(1)
    with open(current_dir+"/"+name+"3/"+name+".chr"+chromosome.group(1)+".wig") as output:
        output.write("fixedStep chrom=chr"+chromosome.group(1)+" start=1 step=1\n")
Run Code Online (Sandbox Code Playgroud)

EDIT2:

这是算法的概念,也许它可以帮助更好地理解问题:

for line in input do :
     chromosome = re.search(something)
     if chromosome :
          if chromosome != '1' :
              ouput.close()
          output = open(file+chromosome)
          output.write(title)
     elif somethingElse :
          output.write(somethingElse)
     endif
endfor
Run Code Online (Sandbox Code Playgroud)

我想创建不同的文件(file1,file2,file3 ......).在创建file2之前,我必须关闭file1; 在创建file3之前,我必须关闭file2; 等...但对于第一个(file1),我不必关闭任何东西!

the*_*eye 5

您可以with像这样使用语句

with open(current_dir+"/"+name+"3/"+name+".chr"+chromosome.group(1)+".wig", 'w') as output:
    output.write("fixedStep chrom=chr"+chromosome.group(1)+" start=1 step=1\n")
Run Code Online (Sandbox Code Playgroud)

您不必担心显式关闭文件.