ネットワーク上の一部のコンピューターに関する情報を含む csv ファイルがあります。コマンドラインから簡単な行を入力して、csv から関連する項目を取得できるようにしたいと考えています。形式は次のとおりです。
$ tag.py *hostname*
csv には約 50 の列があり、MAC アドレスからネットワーク上で最後に確認された時刻までの情報が含まれています。検索時にこれらの列の選択のみを出力したい。必要なコードを書きましたが、動作します。ただし、検索をより柔軟にしたいと考えています。現状では、検索用語は、探している値とまったく同じである必要があります。別名
$ tag.py mycomputer # This returns nothing
$ tag.py mycomputer.co.uk # This returns the information I want
$ tag.py 63746 # This returns nothing
$ tag.py 00063746 # This returns the information I want
だから今私が持っているコードのために。
# Import Modules
import sys
import csv
# Get user Input
# I assume the script is used in the form script.py "search-term"
# If no input added to command, ask for user input
if len(sys.argv) < 2:
print("Please enter a hostname or asset number.")
search_1 = input("Search for:")
else:
search_1=sys.argv[1]
# Setup Variables
# Open cvs and setup csv.reader settings
csvfile = open("file.csv", "r", encoding="Latin-1")
csvfile.seek
reader = csv.reader(csvfile, dialect='excel', delimiter=",", quotechar="'")
# Search cvs for the input string
for line in reader:
if search_1 in line:
print("------------------------------------------------------")
print(" Hostname = " + line[10])
print(" " + line[11])
print(" AssetId = " + line[30])
print(" IP = " + line[7])
print(" MAC = " + line[6])
print(" Owner = " + line[15])
print(" Username = " +line[14])
print(" Tel = " + line[17])
print(" Last Seen = " + line[27])
print("------------------------------------------------------")
csvfile.close()
ホスト名を検索する場合、またはアセット番号に余分な 0 文字を追加する場合に、コードで fqdn を無視できるようにしたいと考えています。len(search_1) < 8
資産番号の問題は、長さが 8 文字になるまで先頭に追加することで解決できると思いますが、0
探しているものと一致するように文字列を操作せずに文字列を検索することを本当に好むという事実を回避しています。 .