python将多个文件中的特定列写入一个fi

2024-09-30 04:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试读取许多文件,并从这些文件中的特定列写入另一个文件。我读到了如何做到这一点,但它不起作用。有人能帮我在脚本中实现pawk吗?你知道吗

    j = j + 1   
    #with open('a1_gather_{j}.txt'.format(j=j)) as f2:  
    f2 = open('a1_gather_{j}.txt'.format(j=j), 'w')
        k=k+1
        print k 
        f1 = open('a1_{k}'.format(k=k))
        # with open('a1_{k}'.format(k=k), 'a') as f1:
        lines = f1.readlines()
        for i, line in enumerate(lines):
            print i
            if line.startswith(searchquery):
                f2.write(line)
                f2.write(lines[i + 1])
                f2.write(lines[i + 2])
                i = i+1
            else :
                i = i+1
        #os.close(f1)
        f1.close()

# awk '{a[FNR]=a[FNR]?a[FNR]" "$2:$2}END{for(i=1;i<=length(a);i++)print a[i]}' *

f2.close()

我更喜欢f = open而不是with open来避免错误IOError: (9, 'Bad file descriptor')。你知道吗

要读取的文件有1000行和两列。我只需要将每个文件的第二列写入另一个文件。你知道吗

有人能纠正我的脚本,并指出如何可以使用pawk?你知道吗


Tags: 文件脚本formatclosea1withlineopen
3条回答
f2 = open('a1_gather_{j}.txt'.format(j=j), 'w')
   f1 = open('a1_{k}.txt'.format(k=k))
   lines = f1.readlines()
   for i, line in enumerate(lines):       
       print(repr(line))                
       f2.write(line)
       i = i+1
   f1.close()
f2.close()

这个人读写了整行。我也可以用这一点,但任何建议的知识,如何可以读和写只有第二列是赞赏和惠康。你知道吗

对于这个特定任务,您可以完全放弃python,改用^{}命令:

cut -f2 a1_{1..10}.txt > a1_gather.txt

默认情况下,它使用制表符作为列分隔符,-d选项允许您更改它。你知道吗

{start..stop}表示法可以更好地控制匹配的文件。你知道吗

假设您需要将第二列从a1_*文件写入a1_gather文件,并使用您在注释中提到的awk,您可以在终端中运行简单的命令:

cat a1_* | awk '{print $2}' > a1_gather

其中:

  • cat a1_*代表文件名以a1_
  • awk '{print $2}'表示打印第二列
  • > a1_gather并将其保存到文件a1_gather

如果您将来对使用awk更感兴趣,this is really useful tutorial可以从中学习。你知道吗

相关问题 更多 >

    热门问题