Я пытаюсь создать этот скрипт, который будет проверять имя хоста компьютера, а затем искать в главном списке значение, чтобы вернуть соответствующее значение в файле csv. Затем откройте другой файл и найдите замену. Я знаю, что это должно быть легко, но раньше я так много не делал в python. Вот что у меня пока...
masterlist.txt (tab delimited)
Name UID
Bob-Smith.local bobs
Carmen-Jackson.local carmenj
David-Kathman.local davidk
Jenn-Roberts.local jennr
Вот сценарий, который я создал до сих пор
#GET CLIENT HOST NAME
import socket
host = socket.gethostname()
print host
#IMPORT MASTER DATA
import csv, sys
filename = "masterlist.txt"
reader = csv.reader(open(filename, "rU"))
#PRINT MASTER DATA
for row in reader:
print row
#SEARCH ON HOSTNAME AND RETURN UID
#REPLACE VALUE IN FILE WITH UID
#import fileinput
#for line in fileinput.FileInput("filetoreplace",inplace=1):
# line = line.replace("replacethistext","UID")
# print line
Прямо сейчас он просто настроен на печать основного списка. Я не уверен, нужно ли анализировать список и помещать его в словарь или что. Мне действительно нужно выяснить, как искать имя хоста в первом поле, а затем возвращать поле во втором столбце.
Заранее спасибо за помощь, Аарон
ОБНОВЛЕНИЕ: я удалил строку 194 и последнюю строку из masterlist.txt, а затем повторно запустил скрипт. Результаты были следующими:
Трассировка (последний последний вызов):
Файл "update.py", строка 3, in for row в csv.DictReader(open(fname), delimiter='\t'): File "/System/Library/Frameworks /Python.framework/Versions/2.6/lib/python2.6/csv.py", строка 103, в следующем файле self.fieldnames "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6 /csv.py", строка 90, в именах полей self._fieldnames = self.reader.next() _csv.Error: в поле без кавычек виден символ новой строки - нужно ли открывать файл в универсальном режиме новой строки?
Текущий сценарий используется...
import csv
fname = "masterlist.txt"
for row in csv.DictReader(open(fname), delimiter='\t'):
print(row)