我在目录中有很多文件,它们具有不同的行号和相同的列号(17列)。我想遍历所有文件并执行以下操作。
下面的代码,但是我不知道我必须在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:
....
谢谢。
答案 0 :(得分:0)
如果您希望使用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