python - 添加特定的新行直到获得特定的数字行python
问题描述
我在一个目录中有大量具有不同行号和相同列号(10 列)的文件。我想遍历所有文件并执行以下操作。
如果文件中的行数小于 20
添加具有相同列号 (10) 的 value(1 1 1 0 1 1 0 1 1 0) 的新行,直到文件有 20 行
- 如果行号在 20 到 40 之间,则重复步骤 2,但最多 40 行
下面的代码,但我不知道如何完成以获得实际结果
os.chdir('./directory/')
names={}
for fn in glob.glob('*.dat'):
with open(fn) as f:
names[fn]=sum(1 for line in f)
line=f.readlines()
x=[1 1 1 0 1 1 0 1 1 0]
if names[fn] < 20:
.....
if names[fn]>20 and names[fn]<40
.....
解决方案
您的代码的一种解决方法,我假设它x = [1 1 1 0 1 1 0 1 1 0]
是一个字符串数据类型变量。如果没有,您可以随时将其转换为一个并完成它。此外,它还会对文件及其已有的行数进行完整性检查,将其缩短一点,然后执行所需的过程。希望能帮助到你
os.chdir('./directory/')
names={}
x=[1 1 1 0 1 1 0 1 1 0]
for fn in glob.glob('*.dat'):
with open(fn) as f:
line=f.readlines()
i = len(line)
if i < 20:
with open(fn, 'a') as input_file:
while i < 20:
input_file.write(x)
input_file.write("\n")
i+=1
if i > 20 and i < 40
with open(fn, 'a') as input_file:
while i < 40:
input_file.write(x)
input_file.write("\n")
i+=1
推荐阅读
- php - Symfony4:在属性路径“categorie”处给出“Categorie”类型的预期参数,“App\Entity\Categorie 的实例”
- reactjs - React Hook Form V7 - Material UI 5 Autocomplete:延迟加载的值未验证
- javascript - 使用 javascript/jquery 在按下键上/下时选择选项
- ssh - 本地 Gitlab > 权限被拒绝(ssh 密钥登录)
- node.js - 为什么没有触发作为目标添加到事件桥规则的 Lambda 函数?
- prometheus - Prometheus 在 2 次连续失败时发出警报
- python - 需要一些帮助从循环创建 JSON 并且格式不正确
- regex - 我无法使用带有两个字段和以美元符号开头的第二个字段的 ansible lineinfile 正则表达式进行匹配
- java - 为什么这个 DP 算法比蛮力算法慢?
- terraform - 有什么方法可以条件化 jsonencoded 数据中的变量?