コンピューターのホスト名を確認し、値のマスター リストを検索して 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
現時点では、マスター リストを印刷するように設定されています。リストを解析して辞書に入れる必要があるかどうかはわかりません。最初のフィールドでホスト名を検索し、そのフィールドを 2 番目の列に返す方法を理解する必要があります。
助けてくれてありがとう、アーロン
更新: masterlist.txt から 194 行目と最後の行を削除し、スクリプトを再実行しました。結果は次のとおりです。
トレースバック (最新の呼び出しが最後):
ファイル "update.py"、3 行目、csv.DictReader(open(fname), delimiter='\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)