如何使用python将两个不同的文件连接成一个文件

时间:2017-09-07 06:27:35

标签: python-2.7

输入:我有100多个示例文件。每个示例文件都有两个不同的文件,扩展名为*.column' and *.datatypes

File1 每个文件都有column个名称,扩展名为* .column
datatypes,扩展名为* .datatypes


我需要的是各自文件样本中的output文件 输出文件应包含column个名称以及datatypes

目前我正在将所有100个文件数据合并并保存到一个文件中。 例如:file_1:

column names   datatypes
id             int
name           string

例如:file_2:

column names   datatypes
id             int
name           string

我得到了在一个单个文件中合并的所有文件列名和数据类型的输出。 我需要的是为每个样本单独合并单个文件。

for name in os.listdir("C:\Python27"):
if name.endswith(".column"):
    for file in name:
        file = os.path.join(name)
        joined = file+ ".joined"
        with open(joined,"w") as fout:
            filenames = glob.glob('*.column')
            for filename in filenames:
                with open(filename) as f1:
                    file_names = glob.glob('*.datatypes')
                    for filename in file_names:
                        with open(filename) as f2:
                            for line1,line2 in zip(f1,f2):
                                x = ("{0} {1} \n".format(line1.rstrip(),line2.rstrip()))
                                y = x.strip()
                                fout.write(y.strip() + ',\n') 

请帮助我。

1 个答案:

答案 0 :(得分:0)

希望下面的内容能够奏效。这是基于每个*.column文件具有相应的*.datatypes文件名的理解,否则代码将引发File not found.错误。

for colname in os.listdir("C:\Python27"):
    if colname.endswith(".column"):
            print('Processing:' + colname)
            file = os.path.splitext(colname)[0]
            joined = file+ ".joined"
            with open(joined,"w") as fout:
                with open(colname) as f1:
                    datname = file+'.datatypes'
                    with open(datname) as f2:
                        for line1,line2 in zip(f1,f2):
                            x = ("{0} {1}".format(line1.rstrip(),line2.rstrip()))
                            y = x.strip()
                            fout.write(y.strip() + ',\n')
                        print('Finished writing to :'+joined)

我测试了一些示例输入文件,如下所示file1.column

date_sev
pos

file1.datatypes

timestamp
date

file2.column

id
name

file2.datatypes

int
string

file3.column

id
name

file3.datatypes

int
string

当我运行文件时,我在控制台中获得以下输出

Processing:file1.column
Finished writing to :file1.joined
Processing:file2.column
Finished writing to :file2.joined
Processing:file3.column
Finished writing to :file3.joined

我得到的输出文件是file1.joined

date_sev timestamp,
pos date,

file2.joined

id int,
name string,

file3.joined

id int,
name string,

此外,如果你想更好地输出文件的输出语法,那么我将进行如下更改... 发件人

x = ("{0} {1}".format(line1.rstrip(),line2.rstrip()))

x = ("{0},{1}".format(line1.rstrip(),line2.rstrip()))

发件人

fout.write(y.strip() + ',\n')

fout.write(y.strip() + '\n')

我在初始版本的原始解决方案中保留了初始版本的格式。