Ich versuche, dieses Skript, das den Computer Host-Namen überprüfen wird dann eine Master-Liste für den Wert suchen, um einen entsprechenden Wert in der CSV-Datei zurückgeben. Öffnen Sie dann eine andere Datei und suchen Sie nach einem Ersatz. Ich weiß, das sollte einfach sein, aber vorher noch nicht so viel in Python. Hier ist, was ich bisher ...Python Hilfe lesen CSV-Datei wegen Line-Ends fehlgeschlagen
masterlist.txt (tab delimited)
Name UID
Bob-Smith.local bobs
Carmen-Jackson.local carmenj
David-Kathman.local davidk
Jenn-Roberts.local jennr
Hier ist das Skript, das ich geschaffen habe bisher
#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
Im Moment ist es nur stellen Sie die Master-Liste zu drucken. Ich bin nicht sicher, ob die Liste geparst und in ein Wörterbuch oder was platziert werden muss. Ich muss wirklich herausfinden, wie man das erste Feld nach dem Hostnamen durchsucht und dann das Feld in der zweiten Spalte zurückgibt.
Vielen Dank im Voraus für Ihre Hilfe, Aaron
UPDATE: Ich entfernte Linie 194 und die letzte Zeile von MasterList.txt und dann das Skript wieder lief. Die Ergebnisse waren folgende:
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?
das aktuelle Skript ...
verwendet wird, einen Leserimport csv
fname = "masterlist.txt"
for row in csv.DictReader(open(fname), delimiter='\t'):
print(row)
Ich bin mir nicht sicher, ob ich verstehe. Die masterlist.txt hat ungefähr 300 Reihen Wie kann ich die UID für einen gegebenen Namen extrahieren, der vom Hostnamen kommt? – Aaron
@user: sehe meinen redigieren – SilentGhost
Ok, ich sehe, was Sie sagen. So verursacht dieses ein Wörterbuch und verbindet sie. Wie würde Ich suche dann das Wörterbuch nach dem "Namen"? Auch scheint ich einen Fehler zu bekommen, wenn ich versuche, das zu laufen Skript Fehler: Zeichen für neue Zeile in nicht angegebenen Feld gesehen - müssen Sie die Datei im Universal-Newline-Modus öffnen? – Aaron