Python ayuda a leer la falla del archivo csv debido a finales de línea
Estoy tratando de crear este script que verificará el nombre de host de la computadora y luego buscará en la lista maestra el valor para devolver un valor correspondiente en el archivo csv. Luego abra otro archivo y busque y reemplace. Sé que esto debería ser fácil, pero no he hecho tanto en Python antes. Esto es lo que tengo hasta ahora ...
masterlist.txt (tab delimited)
Name UID
Bob-Smith.local bobs
Carmen-Jackson.local carmenj
David-Kathman.local davidk
Jenn-Roberts.local jennr
Aquí está el guión que he creado hasta ahora
#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
En este momento, solo está configurado para imprimir la lista maestra. No estoy seguro de si la lista debe analizarse y colocarse en un diccionario o qué. Realmente necesito descubrir cómo buscar el primer campo para el nombre de host y luego devolver el campo en la segunda columna.
Gracias de antemano por tu ayuda, Aaron
ACTUALIZAR: Eliminé la línea 194 y la última línea de masterlist.txt y luego volví a ejecutar el script. Los resultados fueron los siguientes:
Rastreo (llamadas recientes más última):
Archivo "update.py", línea 3, para fila en csv.DictReader (open (fname), delimiter = '\ t'): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/ python2.6 / csv.py ", línea 103, en el siguiente archivo self.fieldnames Archivo" /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/csv.py ", línea 90, en nombres de campo self._fieldnames = self.reader.next () _csv.Error: carácter de nueva línea visto en un campo sin comillas: ¿necesita abrir el archivo en modo universal-nueva línea?
El script actual que se usa es ...
import csv
fname = "masterlist.txt"
for row in csv.DictReader(open(fname), delimiter='\t'):
print(row)