繁体   English   中英

如何将文本文件(或.con文件)连接为一个文件?

[英]How to concatenate text files(or .con files) into one file?

将多个文件连接到一个文件时出现问题。 当我尝试做一个文件时,它起作用了。 但是,对于两个文件,它没有在合并两个文件的地方创建新文件。 我尝试了从glob.globos.path.join所有glob.glob ,但是我在语法或列表属性上glob.glob遇到相同的错误,没有对象替换。

import glob
import os
import os.path

read_files_2=['NYASv1.con', '20Rev1.con','Nv1.con',
              'L1v1.con','fig_L1v1.con','R_L1v1.con']

read_files = glob.glob("I:\T\FE19\Cont\Traes\ctg\Sing\%s.con",% read_files_2)

with open("result.con", "wb") as outfile:
    for f in read_files:
        with open(f, "rb") as infile:
            outfile.write(infile.read())

我收到%s.con",% read_files_2语法错误%s.con",% read_files_2

  1. 如果所有文件都在同一文件夹中,只需使用path.join遍历它们:
import os

dr = "I:\T\FE19\Cont\Traes\ctg\Sing"
read_files = [os.path.join(dr, f) for f in read_files_2]

其余代码与您的相同

  1. 如果不是,请使用最顶层的目录(包括所有目录)并使用os.walk
import os

dr = "I:\T\FE19\Cont\Traes\ctg\Sing"
read_files = []
for root, _, files in os.walk(dr):
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))

如果仍要使用glob ,则可以使用iglob ,它是迭代器版本:

import glob

dr = "I:\T\FE19\Cont\Traes\ctg\Sing\**\*.con"
read_files = []
for file in glob.iglob(dr, recursive=True):
    if file in read_files_2:
        read_files.append(file)

出现语法错误的原因是您有群集,% ,这是无效的。 逗号表示后面是另一个参数, %不是表达式的有效开头。 我认为您正在考虑"... %s ..." % read_files_2 但这仍然无法按照您的意图进行。

我想你打算做的是

  1. glob.glob('I:\\T\\FE19\\Cont\\Traes\\ctg\\Sing\\*.con')
  2. ['I:\\T\\FE19\\Cont\\Traes\\ctg\\Sing\\%s.con' % file for file in read_files_2]

Glob查找与模式匹配的每个文件,其他文件仅匹配以这种方式格式化的文件。

如果您希望将所有.con文件放在I:\\T\\FE19\\Cont\\Traes\\ctg ,则可以使用

glob.glob('I:\\T\\FE19\\Cont\\Traes\\ctg\\**\\*.con', recursive=True)

它将在该目录下找到所有带有*.con扩展名的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM