我正在尝试创建此脚本,该脚本将检查计算机主机名,然后在主列表中搜索该值以在 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
现在,它只是设置打印主列表。我不确定是否需要解析列表并将其放入字典或什么中。我真的需要弄清楚如何在第一个字段中搜索主机名,然后在第二列中返回该字段。
提前感谢您的帮助,亚伦
更新:我从 masterlist.txt 中删除了第 194 行和最后一行,然后重新运行了脚本。结果如下:
回溯(最近一次调用):
文件“update.py”,第 3 行,在 csv.DictReader(open(fname), delimiter='\t') 中的行中:文件“/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)