以下是工作中用python來處理excel檔案裡的訊號學習內容的**
由於**可讀性很差,不建議作為excel通用處理類的參考
from collections import namedtuple
import xlrd
import xlwt
from xlwt.compat import
basestring
class
excel
(object):
# 1.初始化
def__init__
(self,filename)
: self.filename = filename
self.workbook = xlrd.open_workbook(self.filename)
self.sheets = self.workbook.sheet_names(
) self.sheets_cache =
self.cells =
self.vamip =
# self.wk_vam_out =
# 工位口對應的vam和out
self.wk_names =
# 工位口列表
self.init(
)# 2.初始化函式
definit
(self)
:for name in self.sheets:
self.sheets_cache[name]
= self.read_sheet(name)
for row_data in self.sheets_cache[sheet_vamout]
:if row_data.vamname not
in self.vamip:
self.vamip[row_data.vamname]
= row_data.vamip
vam_out =
(row_data.vamname,row_data.outport)
wk = row_data.outcable
if wk and wk not
in self.wk_vam_out:
self.wk_vam_out[wk]
=[vam_out]
elif wk and vam_out not
in self.wk_vam_out[wk]
: self.wk_vam_out[wk]
self.wk_names = self.wk_vam_out.keys(
)for row_data in self.sheets_cache[sheet_vamin]
:# 3.讀取標籤頁
defread_sheet
(self,sheet_name)
:"""
# 讀取excel標籤頁內容
:param sheet_name: sheet名字
:return: nametuple列表
"""lines =
if sheet_name == sheet_vamout:
title_cn = title_out
elif sheet_name == sheet_vamin:
title_cn = title_in
else
:return lines
sht = self.workbook.sheet_by_name(sheet_name)
nrows = sht.nrows
print
(sheet_name,nrows)
titles = self.lst_strip(sht.row_values(0)
) titles =
[title_cn[field]
for field in titles]
row = namedtuple(
"row"
,titles)
for row_idx in
range(1
,nrows)
: data = sht.row_values(row_idx,start_colx=
0,end_colx=
len(titles)
) data = self.lst_strip(data)
row_data = row(
*data)
return lines
# 4.查詢strip
deflst_strip
(self,lst)
: _lst =
[item.strip()if
isinstance
(item,
basestring
)else item for item in lst]
_lst =
[item if item else
''for item in _lst]
return _lst
# 5.獲取sheet內容
defsheet
(self,sheet_name)
:"""
獲取sheet內容
:param sheet_name:sheet名字
:return: nametuple列表
"""if sheet_name not
in self.sheets_cache:
self.sheets_cache[sheet_name]
= self.read_sheet(sheet_name)
return self.sheets_cache[sheet_name]
# 6.vam列表
defcell_in_vam
(self,vam_names)
:"""
:param vam_names: vam列表
:return: nametuple列表
"""rows =
for vam_name in vam_names:
for cell in self.cells:
if vam_name == cell.vamname:
# 7.vam名字
defvam_ip
(self,vam_name)
:"""
:param vam_name:vam名字
:return: vam ip
"""return self.vamip[vam_name]
# 8.獲取vam名字列表
defvams
(self)
:"""
獲取所有vam名字列表
:return: 包含所有vam的list
"""return
sorted
(self.vamip.keys())
# 9.獲取小區名字
defget_cell_by_cellname
(self,cell_name)
:"""
:param cell_name:小區名
:return: 包含小區資訊的nametuple
"""for cell in self.cells:
if cell.cellname == cell_name:
return cell
# 10.獲取小區資訊
defget_cell_by_vamin
(self,vam,inport)
:"""
:param vam:vam名字
:param inport: in口
:return: 包含小區資訊的nametuple
"""for cell in self.cells:
if cell.vamname == vam and
int(cell.inport)
==int
(inport)
:return cell
return
none
# 11.工位口
defget_vam_out_by_workstation
(self,wk)
:"""
:param wk:工位口
:return: [(vam1,1),(vam2,1)]
"""ret =
for wk_name in self.wk_names:
if wk not
in wk_name:
continue
vam_out = self.wk_vam_out[wk_name]
for vo in vam_out:
if vo in ret:
continue
return ret
python 訊號量 python學習之訊號量
01 訊號量 1 概述 訊號量是用來控制線程併發數的。2 原理 boundedsemaphore和semaphore管理乙個內建的計數器。每當資源釋放遞增時 呼叫acquire 計數器 1,資源消耗時遞減 呼叫release 計數器 1。3 呼叫格式 threading.boundedsemapho...
訊號相關概念
我記得我在程序間通訊的時候說到過一種方式 訊號量 終止在linux命令列上正在執行的可執行程式所用的ctrl c,也屬於一種訊號 是常見sigint訊號 所以,今天我想具體分享一下與訊號相關的一些概念。linux中訊號共有64個,常見訊號量只有31個,利用kill l命令就可以用來檢視全部訊號,如下...
TTL RGB訊號相關
圖2 雙畫素 雙路 rgb資料傳送方式各訊號之間的定時關係。de訊號 有效資料選通訊號 de訊號與行場同步訊號之間的關係 de訊號與行場同步訊號之間的定時關係如圖2所示 以1024 768液晶面板為例 圖 a 所示為de與行同步訊號之間的定時關係 圖 b 所示為de與場同步訊號之間的定時關係。圖 b...