[Python] 纯文本查看 复制代码
import pandas as pd
import time
import openpyxl as op
import os
# 设置预读取文件路径path_file
print("**********************************\n"
"1-请将原有的总数居复制到程序目录下,并将文件夹改名为总数据\n"
"2-输入采气日报路径\n"
"3-按Enter键执行程序\n"
"4-等待程序运行完成\n"
"***********************************\n")
path_file = str(input('请输入采气日报路径,以文件名结尾:\n'))
# print('请输入采气日报路径,以文件名结尾:\n')
# path_file = sys.stdin.readline()
# 建立月数据目录
if not os.path.exists("月数据"):
os.mkdir("月数据")
# 读取采气日报所有工作表数据
M_Date = pd.read_excel(path_file, sheet_name=None, header=3,
names=['井号', '生产层位', '生产时间', '井口油压', '井口套压', '井口温度', '日产气', '日产水', '日注醇', '集气方式',
'采气方式', '单井动态'], usecols="B,C,D,E,F,G,J,M,P,S,T,U",
)
# print(type(M_Date))
excel_f = pd.ExcelFile(path_file)
# 获取所有工作表名
names = excel_f.sheet_names
# 删除第一个和最后一个工作表
del names[0]
del names[-1]
# 分割日期函数,传入的是以日期为工作表名的列表,返回处理好的日期列表
def fg_riqi(riqi):
ret_riqi = []
dq_riqi = time.strftime("%Y")
for r in riqi:
r_array = r.split('.')
ret_riqi.append(f"{dq_riqi}年{r_array[0]}月{r_array[1]}日")
return ret_riqi
# 新建excel
def add_excel(ff):
wb = op.Workbook()
wb.save(f"月数据/{ff}#集气站.xlsx")
wb.close()
return f"月数据/{ff}#集气站.xlsx"
# 读取集气站所有气井数据,传入的参数为:起始行s,结束行e,集气站站号j
def get_date(s, e, j):
print("正在执行....请等待........")
book_name = add_excel(j)
writ = pd.ExcelWriter(book_name)
# 遍历行数据 井号
for row in range(s, e + 1):
# 遍历所有日期工作表中行数据
all_date = pd.DataFrame()
for name in names:
# 读取行数据
all_date = all_date.append(M_Date[name].iloc[row])
# print(all_date)
scsj = fg_riqi(names)
all_date.insert(2, '日期', scsj)
all_date.to_excel(writ, sheet_name=all_date["井号"].iloc[3], index=False)
writ.save()
print(f"{j}#集气站-------已完成")
# 整理总数据,传递集气站序号如:1,20
def getdata_all(mi, ma):
# 新建目录
if not os.path.exists("新数据"):
os.mkdir("新数据")
for i in range(mi, ma + 1):
print(f'{i}#正在整理,请稍等.....')
if i == 11:
continue
else:
all_date_path = f"总数据/{i}#动态分析数据.xlsx"
fen_date_path = f"月数据/{i}#集气站.xlsx"
data = pd.ExcelFile(all_date_path)
data1 = pd.ExcelFile(fen_date_path)
# 获取总数据指定工作博所有工作表名
all_sht = data.sheet_names
# 获取月数据指定工作博所有工作表名
fen_sht = data1.sheet_names
# 读取月数据工作博中所有工作表数据
df_fen = pd.read_excel(fen_date_path, sheet_name=fen_sht)
# 读取总数据工作博中所有工作表数据
df_all = pd.read_excel(all_date_path, sheet_name=all_sht)
# 新建工作表
wb = op.Workbook()
wb.save(f"新数据/{i}#动态分析数据.xlsx")
wb.close()
writ = pd.ExcelWriter(f"新数据/{i}#动态分析数据.xlsx")
for st_all in all_sht:
print('正在运行中...请勿关闭')
for st_fen in fen_sht:
if st_fen == st_all:
df_new = df_all[st_all].append(df_fen[st_fen])
df_new.to_excel(writ, sheet_name=st_all, index=False)
time.sleep(0.5)
writ.save()
time.sleep(0.8)
print(f'{i}#已执行完毕.....')
time.sleep(2)
del df_all
del df_fen
del df_new
del data
del data1
print("**************已全部完成**********************************")
# 1站
get_date(0, 14, 1)
# 2站
get_date(19, 38, 2)
# 3站
get_date(43, 53, 3)
# 4站
get_date(58, 62, 4)
# 5站
get_date(67, 73, 5)
# 6站
get_date(78, 86, 6)
# 7站
get_date(91, 100, 7)
# 8站
get_date(105, 115, 8)
# 9站
get_date(120, 131, 9)
# 10站
get_date(136, 147, 10)
# 12站
get_date(152, 159, 12)
# 13站
get_date(164, 191, 13)
# 14站
get_date(196, 211, 14)
# 15站
get_date(216, 231, 15)
# 16站
get_date(236, 262, 16)
# 17站
get_date(267, 291, 17)
# 18站
get_date(296, 311, 18)
# 19站
get_date(316, 340, 19)
# 20站
get_date(345, 380, 20)
print("**************采集月数据已全部完成**********************************")
time.sleep(2)
print("**************开始合并整理总数据**********************************")
getdata_all(1, 20)