首页 > 解决方案 > 添加新行直到获得特定的数字行python

问题描述

我在一个目录中有大量具有不同行号和相同列号(17 列)的文件。我想遍历所有文件并执行以下操作。

  1. 如果文件中的行数小于 100
  2. 添加具有相同列号 (17) 的 value(0.00 0.00 ...) 的新行,直到文件有 100 行
  3. 如果行号在 100 到 200 之间,则重复步骤 2,但最多 200 行

下面的代码,但我不知道我必须在 if 语句中写什么才能获得实际结果

 os.chdir('./directory/') 
 names={}
 for fn in glob.glob('*.dat'):
 with open(fn) as f:
 names[fn]=sum(1 for line in f)
 if names[fn] < 100:
  .....
 if names[fn]>100 and names[fn]<200:
  ....

谢谢。

标签: pythonfile

解决方案


如果您关心 bash 实现的解决方案,您可以查看此bash脚本

#!/usr/bin/env bash

printfn() {
    for (( i=0;i<$1;i++ ))
        do
            for (( j=0;j<$3;j++ ))
            do
               printf "0.00  "#<---change spacing that fits your column requiments 
            done
            printf "\n"
        done >> $2
    }

#Here columns are 17
COLS=17                       #<---change column numbers if you need
f=(*.dat)
for file in ${f[@]}; do
    lines=`cat $file | wc -l`
    if [[ $lines -lt 100 ]] ; then 
        printfn 100-$lines $file 17
    elif [[ $lines -lt 200 && $lines -gt 100 ]]; then
        printfn 200-$lines $file 17
    fi
done

如果 #of 行数小于 100 或行数在 200 到 100 之间,这将用零填充文件。将其放入文件中(例如 script.sh )。

不要忘记chmod +x script.sh这一点


推荐阅读