2017-03-25 8 views
0

一連のテキストファイルを連結するためのコードは次のとおりです。 しかし、私はファイルのデータを前の行の下に置かないで置きたいのですが、どうすればいいのですか?隣り合ったテキストファイルの連結(横並び)

for dir in list(subdirs): 
    splitdir = dir.split('/') 
    # YOU WILL NEED TO EDIT THIS TO GRAB sub001 
    splitdir_sub = splitdir[5] 
    subnum=splitdir_sub[-4:] 
    # YOU WILL ALSO NEED TO EDIT THIS TO GRAB THE PART WITH THE RUNNUM 
    splitdir_run = splitdir[8] 
    runnum=splitdir_run[-1:] 
    print("marging subject %s Run %s"%(subnum, runnum)) 
    filenames = ['/home/navotn/Exp5/participants/%s/preprocessed/1lev/block%sn.feat/white_matter.txt'%(subnum, runnum), '/home/navotn/Exp5/participants/%s/preprocessed/PPFSL/block%s/motion_assess/confound.txt'%(subnum, runnum)] 
    with open("%s/%s/preprocessed/PPFSL/block%s/motion_assess/confoundWM.txt"%(fsfdir, subnum, runnum), 'w') as outfile: 
     for fname in filenames: 
      with open(fname) as infile: 
       for line in infile: 
        outfile.write(line) 
+0

ファイルの末尾に空白行がありますか?それが理由かもしれないから。 – Ibrahim

+0

@Navot Naorファイルに「w」というファイルの代わりに「a」を追加してみてください – Len

答えて

0

このコードは、入力ファイルは行の同じ番号を持っていることを提供し、あなたが必要なものを与えるかもしれません。

import os 

fileNames = os.listdir('concatenate') 
os.chdir('concatenate') 
previous = fileNames[0] 
for fileName in os.listdir('.')[1:]: 
    with open(previous) as oldConcatenate, open(fileName) as nextFile, open('new.txt', 'w') as newConcatenate: 
     while True: 
      oldLine = oldConcatenate.readline().strip() 
      if not oldLine: 
       break 
      nextLine = nextFile.readline().strip() 
      newConcatenate.write(oldLine + nextLine + '\n') 
    if previous != fileNames[0]: 
     os.remove('concatenated.txt') 
    os.rename('new.txt', 'concatenated.txt') 
    previous = 'concatenated.txt' 

コードは、第一と第二のファイルを連結し、ファイル「concatenated.txt」は再び、この第3のファイルを追加し、ように「concatenated.txt」と、このファイルを保持することを続けます。

関連する問題