J'essaye de créer ce script qui vérifiera le nom d'hôte d'ordinateur puis recherchera une liste principale pour la valeur pour retourner une valeur correspondante dans le fichier de csv. Puis ouvrez un autre fichier et faites une recherche de remplacement. Je sais que cela devrait être facile, mais je n'ai pas fait grand-chose en python auparavant. Voici ce que j'ai jusqu'à présent ...Python aide à lire le fichier csv échouant en raison des fins de ligne
masterlist.txt (tab delimited)
Name UID
Bob-Smith.local bobs
Carmen-Jackson.local carmenj
David-Kathman.local davidk
Jenn-Roberts.local jennr
Voici le script que j'ai créé jusqu'ici
#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 ce moment, il est juste configuré pour imprimer la liste principale. Je ne suis pas sûr si la liste doit être analysée et placée dans un dictionnaire ou quoi. J'ai vraiment besoin de comprendre comment rechercher le premier champ pour le nom d'hôte et ensuite retourner le champ dans la deuxième colonne.
Merci d'avance pour votre aide, Aaron
MISE À JOUR: Je retire la ligne 194 et dernière ligne de MasterList.txt puis re-couru le script. Les résultats sont les suivants:
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?
Le script actuel utilisé est ...
import csv
fname = "masterlist.txt"
for row in csv.DictReader(open(fname), delimiter='\t'):
print(row)
Je ne suis pas sûr de comprendre. environ 300 lignes Comment puis-je extraire l'UID pour un nom donné qui vient du nom d'hôte? – Aaron
@user: voir mon edit – SilentGhost
Ok, je vois ce que vous dites, donc cela crée un dictionnaire et les associe. Je vais ensuite rechercher le nom dans le dictionnaire? En outre, il semble que je reçois une erreur lorsque j'essaie de lancer le script Erreur: caractère de nouvelle ligne vu dans le champ non coté - avez-vous besoin d'ouvrir le fichier en mode universal-newline? – Aaron