Estoy tratando de crear este script que verifique el nombre de host de la computadora y busque en una lista maestra el valor para devolver un valor correspondiente en el archivo csv. Luego abre otro archivo y haz un buscar y reemplazar. Sé que esto debería ser fácil, pero no he hecho tanto en Python antes. Aquí es lo que tengo hasta ahora ...Python help reading csv file failed by line-endings
masterlist.txt (tab delimited)
Name UID
Bob-Smith.local bobs
Carmen-Jackson.local carmenj
David-Kathman.local davidk
Jenn-Roberts.local jennr
aquí es 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, es simplemente ajustada para imprimir la lista maestra. No estoy seguro de si la lista debe analizarse y colocarse en un diccionario o qué. Realmente tengo que encontrar la manera de buscar el primer campo para el nombre de host y luego regresar al campo en la segunda columna.
Gracias de antemano por su ayuda, Aaron
ACTUALIZACIÓN: Me quita la línea 194 y la última línea de MasterList.txt y vuelva a ejecutar el script. Los resultados fueron los siguientes:
Traceback (most recent call last):
File "update.py", line 3, in for row in csv.DictReader(open(fname), delimiter='\t'): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/csv.py", line 103, in next self.fieldnames File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/csv.py", line 90, in fieldnames self._fieldnames = self.reader.next() _csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
El script actual que se utiliza es ...
import csv
fname = "masterlist.txt"
for row in csv.DictReader(open(fname), delimiter='\t'):
print(row)
No estoy seguro de entender. El archivo masterlist.txt tiene alrededor de 300 filas. ¿Cómo puedo extraer el UID para un Nombre dado que proviene del nombre de host? – Aaron
@usuario: vea mi edición – SilentGhost
Ok, veo lo que está diciendo. Esto crea un diccionario y los asocia. Luego, ¿sigo buscando en el diccionario el 'Nombre'? Además, parece que recibo un error cuando intento ejecutar el secuencia de comandos Error: carácter de nueva línea visto en el campo sin comillas: ¿necesita abrir el archivo en modo de nueva línea universal? – Aaron