Я разбираю некоторые текстовые файлы (файлы с версией Cisco switch show) со следующим скриптом. Он отлично работает, за исключением того, что только один раз выводит «серийный номер» & «модель», и есть более одной строки с этой информацией. Как я могу заставить скрипт продолжать анализировать весь файл?python для завершения цикла до конца файла
import os
import csv
inventoryfile = open('inventory.csv', 'a')
write_inventory = csv.writer(inventoryfile)
#write_inventory.writerow(('Hostname', 'Model', 'Serial Number'))
def parse_files(path):
for filename in os.listdir(path):
with open(os.path.join(path,filename),'r') as showfile:
for line in showfile:
# i = 0
# while i < 4:
if '#sh' in line:
hostname = line.split('#')[0]
if 'Model number' in line:
model = line.split()[-1]
if 'System serial number' in line:
serial = line.split()[-1]
elif 'Model Number' in line:
model = line.split()[-1]
elif 'System Serial Number' in line:
serial = line.split()[-1]
# i += 1
write_inventory.writerow((hostname, model, serial))
directory = raw_input("Please specify Show Files directory: ")
parse_files(directory)
Ваша write_inventory линия не внутри для цикла, он будет работать только один раз для каждого файла. –
@TonyBlundell, если я помещаю его в цикл for, я получаю эту ошибку: 'UnboundLocalError: локальная переменная 'hostname', на которую ссылается перед присваиванием, и именно поэтому она есть. – bordeltabernacle
Эта ошибка правильная, вы получаете доступ к имени хоста, но назначаете ее только в том случае, если в строке находится #sh. –