2017-03-29 6 views
0

os.walkを使用するスクリプトがあり、出力ファイルの最初の行に現在の作業ディレクトリを追加します。現在の作業ディレクトリを取得するためにos.path.realpathを追加しましたが、次のcsv.writerのコマンドは最初の行に出力を追加します。したがって、ディレクトリテキストの直後にcsv.writerを新しい最初の行には表示されません。私は「私が追加できることを知っている/ n」は新しい行で開始するが、どのように私はos.path.realpathコマンドに追加するには? おかげPython; csvライターは改行で始める必要があります

import os 
import csv 
from itertools import chain 
from collections import defaultdict 


def get_file_values(find_files, output_name): 
    for root, dirs, files in os.walk(os.getcwd()): 
     if all(x in files for x in find_files): 
      outputs = [] 
      for f in find_files: 
       d = {} 
       with open(os.path.join(root, f), 'r') as f1: 
        for line in f1: 
         ta = line.split() 
         d[ta[1]] = int(ta[0]) 
       outputs.append(d) 

      d3 = defaultdict(list) 
      for k, v in chain(*(d.items() for d in outputs)): 
       d3[k].append(v) 

      with open(os.path.join(root, output_name), 'w+') as fnew: 
       fnew.write(os.path.realpath(root)) 
       writer = csv.writer(fnew) 
       for k, v in d3.items(): 
        writer.writerow([k] + v) 

get_file_values(['genes.gff.genespercontig.csv', 'hmmer.analyze.txt.results.txt'], 'output_contigsvsgenes.csv') 

答えて

1

os.path.realpath()することだけに改行を追加し、文字列を返しますそれ:

fnew.write(os.path.realpath(root) + '\n') 
+0

ありがとうございます! – Gravel

関連する問題