我有一个 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
我想我可以通过在前面附加一些来解决资产编号问题,0
直到它有 8 个字符长,但这避免了我真的更愿意只搜索字符串而不对其进行操作以匹配我正在寻找的东西的事实.