首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取多个TSV文件并写入一个TSV文件Python

读取多个TSV文件并写入一个TSV文件Python
EN

Stack Overflow用户
提问于 2017-10-10 18:44:28
回答 1查看 2.8K关注 0票数 0

因此,我有多个TSV文件,格式如下:

代码语言:javascript
复制
a    b    c    d    e    f    g    h
a_1  b_1  c_1  d_1  e_1  f_1  g_1  h_1
a_2  b_2  c_2  d_2  e_2  f_2  g_2  h_2
.    .    .    .    .    .    .    .
.    .    .    .    .    .    .    .
.    .    .    .    .    .    .    .
a_n  b_n  c_n  d_n  e_n  f_n  g_n  h_n

(第一行(a,b,.))( is标题)

我想全部读取它们,如果对于每一行列都有我想要的属性(假设它等于1),我希望将该行保存在一个与上面的格式相同的TSV文件中,但是数据将被过滤。

我有代码来提取我想要的行并将它写到TSV文件中,但是我不知道如何读取多个TSV文件并将其写入一个TSV文件。

到目前为止,我的情况如下:

代码语言:javascript
复制
with open("./someDirectory/file.tsv") as in_file, 
open("newFile.tsv","w") as out_file:
first_line = True
for line in in_file:
    if first_line: #to print the titles
        print(line, file=out_file)
        first_line = False
    columns = line.split("\t")
    columnToLookAt = columns[7]
    if columnToLookAt == "1":
        print(line, file=out_file)

因此,假设someDirectory有大约80个tsv文件。迭代所有这些并将所需的行写入out_file的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 18:59:16

您可以使用标准库中的glob.glob根据某种模式获取文件名列表:

代码语言:javascript
复制
>>> import glob
>>> glob.glob('/tmp/*.tsv')
['/tmp/file1.tsv', '/tmp/file2.tsv', ...]

然后将所有这些作为输入文件进行迭代。例如:

代码语言:javascript
复制
import glob

first_line = True
with open("newFile.tsv","w") as out_file:
    for in_path in glob.glob("./someDirectory/*.tsv"):
        with open(in_path) as in_file:
            for line in in_file:
                if first_line: #to print the titles
                    print(line, file=out_file)
                    first_line = False
                columns = line.split("\t")
                columnToLookAt = columns[7]
                if columnToLookAt == "1":
                    print(line, file=out_file)

另外,您还可以使用csv.reader模块通过设置dialect='excel-tab'读取选项卡分隔的值文件.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46673801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档