【发布时间】:2011-02-25 05:14:00
【问题描述】:
我正在尝试创建此脚本,该脚本将检查计算机主机名,然后在主列表中搜索该值以在 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), 分隔符='\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)
【问题讨论】:
标签: python csv universal line-endings