資源簡介
條件:已知現狀OD表,將來OD表各行、各列總和。通過程序實現對分布交通流的計算,能實現兩種計算方式:1.平均增長系數法;2.底特律法。
代碼片段和文件信息
from?win32com.shell?import?shell
from?win32com.shell?import?shellcon
import?xlrd
import?xlwt
#?獲取桌面路徑函數
def?GET_DTPATH():
????ilist?=?shell.SHGetSpecialFolderLocation(0?shellcon.CSIDL_DESKTOP)
????dtpath?=?shell.SHGetPathFromIDList(ilist)
????dtpath?=?dtpath.decode(“gbk“)
????return?dtpath
#?打開“OD”文工作簿函數
def?open_OD():
????#?獲取路徑
????open_path1?=?GET_DTPATH()?+?“\OD.xlsx“
????open_path2?=?GET_DTPATH()?+?“\OD.xls“
????#?打開文件
????try:
????????OD?=?xlrd.open_workbook(open_path1)
????except:
????????try:
????????????OD?=?xlrd.open_workbook(open_path2)
????????except:
????????????print(“在桌面找不到命名為“OD”的表格文件。。。“)
????????????input()
????return?OD
#?行求和函數
def?SUM_ROW(arry):
????sum_row?=?[]
????for?i?in?range(len(arry)):
????????row?=?0
????????for?j?in?range(len(arry[0])):
????????????row?=?row?+?arry[i][j]
????????sum_row.append(row)
????return?sum_row
#?列求和函數
def?SUM_COL(arry):
????sum_col?=?[]
????for?i?in?range(len(arry[0])):
????????col?=?0
????????for?j?in?range(len(arry)):
????????????col?=?col?+?arry[j][i]
????????sum_col.append(col)
????return?sum_col
#?將表格數據儲存為列表數據
def?excel_To_list():
????#?打開“OD”文件
????OD?=?open_OD()
????#?獲取表格1,表格2
????now_od_sheet?=?OD.sheets()[0]
????future_od_sheet?=?OD.sheets()[1]
????#?現狀OD表
????now_od?=?[]
????#?將來OD表
????future_od?=?[]
????#?獲取現狀OD表數據,保存成列表
????for?i?in?range(now_od_sheet.nrows):
????????now_od.append(now_od_sheet.row_values(i))
????#?獲取將來OD表數據,保存成列表
????for?i?in?range(future_od_sheet.nrows):
????????future_od.append(future_od_sheet.row_values(i))
????return?now_od?future_od
????print(“現在OD表:“?now_od)
????print(“將來OD表::“?future_od)
#?將計算結果寫入excel表格
def?list_To_excel(q?O?D?n?file_name):
????workbook?=?xlwt.Workbook(encoding=“asscii“)
????#?寫入
????for?n?in?range(1?n?+?1):
????????worksheet?=?workbook.add_sheet(“第“?+?str(n)?+?“次計算“)
????????#?寫入OD細節值
????????for?i?in?range(len(q[n])):
????????????for?j?in?range(len(q[n][0])):
????????????????worksheet.write(i?+?1?j?+?1?q[n][i][j])
????????#?寫入“合計“字樣
????????worksheet.write(0?len(q[n][0])?+?1?“合計“)
????????worksheet.write(len(q[n])?+?1?0?“合計“)
????????#?寫入行求和
????????for?i?in?range(1?len(q[n])?+?1):
????????????worksheet.write(i?len(q[n][0])?+?1?O[n][i?-?1])
????????????worksheet.write(i?0?i)
????????#?寫入列求和
????????for?j?in?range(1?len(q[n][0])?+?1):
????????????worksheet.write(len(q[n])?+?1?j?D[n][j?-?1])
????????????worksheet.write(0?j?j)
????#?保存路徑
????save_path?=?GET_DTPATH()?+?“\\“?+?file_name?+?“.xls“
????try:
????????workbook.save(save_path)
????????print(“\n\n保存成功....請查看桌面文件:“?+?file_name?+?“.xls“)
????except:
????????print(“\n\n保存不成功.....可能該文件正在打開狀態“)
#?顯示信息
print(“1.平均增長系數法????????????2.底特律法“)
which_way?=?input(“輸入選擇計算的方法:“)
#?檢驗標準
a?=?0.03
try:
????if?which_way?==?“1“:
????????print(“+------------------------+“)
????????print(“|?????平均增長系數法?????|“)
????????print(“+------------------------+“)
????????file_name?=?“平
- 上一篇:python 爬取圖片
- 下一篇:python3.dll——python3.5.2
評論
共有 條評論