在一个CSV-fi中运行两个独立(非嵌套)for循环

2024-09-28 22:10:00 发布

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

我正在尝试创建一个配置模板,使用CSV行和列作为变量输出到我的一个网络配置的文本文件中。代码如下:

import sys
import os
import csv

with open('VRRP Mapping.csv', 'rb') as f:
    reader = csv.reader(f)
    myfile = open('VRRP fix.txt', 'w')
    next(reader, None)
    myfile.write('*' * 50 + '\n' + 'VLAN interfaces for Core A\n' + '*' * 50 + '\n\n')
    for row in reader:
        #First, for the A side
        myfile.write('interface vlan ' + str(row[0]) + '\n')
        myfile.write('no ip vrrp ' + str(row[7]) + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' ' + row[9] + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' adver-int 10\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' backup-master enable\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' holddown-timer 60\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' priority ' + str(row[3]) + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' enable\n')
        myfile.write('exit\n\n')
    myfile.write('*' * 50 + '\n' + 'VLAN interfaces for Core B\n' + '*' * 50 + '\n\n')
    for row in reader:
        #And then the B side
        myfile.write('interface vlan ' + str(row[0]) + '\n')
        myfile.write('no ip vrrp ' + str(row[7]) + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' ' + row[9] + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' adver-int 10\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' backup-master enable\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' holddown-timer 60\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' priority ' + str(row[5]) + '\n')
        myfile.write('ip vrrp ' + str(row[8]) + ' enable\n')
        myfile.write('exit\n\n')
    myfile.close()

我遇到的问题是在第一个for循环之后。显示了“核心b的VLAN接口”,但是第二个for循环中的所有内容都不会输出到文本文件。你知道吗

建议?你知道吗


Tags: csvimportipforenableopenmyfilereader
2条回答

您已经使用了reader对象中的所有行,需要从头开始。在第二个for循环add之前:

f.seek(0)

这将使指针回到文件的开头,以便您可以再次循环。http://www.tutorialspoint.com/python/file_seek.htm

如果需要读取两次读取器,则需要读取两次文件。一旦你读完一本书,你就不只是继续读下去,还指望能找到别的东西。你得回到开头。为此,请使用

f.seek(0)
next(reader, None)

for循环之间。请注意,f对于文件对象来说是一个糟糕的名称,myfile也是。它们根本不描述它是什么文件或文件的用途。你知道吗

相关问题 更多 >