python - 添加新行直到获得特定的数字行python
问题描述
我在一个目录中有大量具有不同行号和相同列号(17 列)的文件。我想遍历所有文件并执行以下操作。
- 如果文件中的行数小于 100
- 添加具有相同列号 (17) 的 value(0.00 0.00 ...) 的新行,直到文件有 100 行
- 如果行号在 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:
....
谢谢。
解决方案
如果您关心 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
这一点
推荐阅读
- python-3.x - 我需要关于 cog_command_error 的帮助
- reactjs - 切换主题的 ReactJs 自定义钩子
- sql - 如何允许 sql athentication 在 asp.net mvc 中运行 ssis 包
- google-app-engine - 与 Google Cloud App Engine 的初始连接缓慢
- python - 如何用装饰器绕过python函数定义?
- python - 我如何在 python 中使用 sllenium 转到谷歌的下一页
- mysql - 子查询上的 MySQL LIKE
- c++ - C++程序,将常规文件转换为十六进制和二进制
- c++ - 有没有办法在 Windows 上以低延迟模拟按键?
- python - 在不使用任何外部库的情况下读取 .csv 文件时忽略字符串文字中的逗号