【问题标题】:Concatenating text files next to each other (side by side)将文本文件并排连接在一起(并排)
【发布时间】:2017-03-25 08:42:04
【问题描述】:

我有以下代码用于连接一系列文本文件。 但是我希望将文件中的数据放在前面的行旁边而不是放在前面的行下,我该怎么做?

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)

【问题讨论】:

  • 您的文件是否以空的新行结尾?因为这可能是原因。
  • @Navot Naor 尝试使用文件追加“a”而不是文件写入“w”

标签: python text concatenation


【解决方案1】:

如果输入文件的行数相同,此代码可能会满足您的需求。

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”,然后将第三个文件添加到此文件中并再次将此文件保存为“concatenated.txt”,依此类推。

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 2021-09-14
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多