本帖最后由 浮云。 于 2019-8-5 08:43 编辑
平时工作会经常处理表格合并,因此写了点代码用来提高工作效率,不要问我为什么不用其他更简单的办法。。因为刚好在学python。我是小白,所以写的可能比较冗余,代码是可以运行了,但是打包以后就不能运行了,运行后的文件只有一开始写入的表头,想问问大佬是因为什么原因。。
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
import os,csv
adr = os.path.dirname(__file__)#获取当前文件所在目录
def file_name(file_dir):
file_list =[]
for root, dirs, files in os.walk(file_dir):#files:当前路径下所有非目录子文件。root,当前目录路径。dirs:当前目录下的所有子目录
for file in files:#遍历当前路径下所有非目录子文件
if os.path.splitext(file)[1] == '.xls':#通过splitext把后缀跟名字分开,以列表格式,判断你要的格式,然后把路径加入进列表
file_list.append(os.path.join(root,file))
return file_list#返回列表
f = open('汇总.csv','a',newline='',encoding='utf-8') #创建一个汇总表格
write = csv.writer(f) #实例化对象
write.writerow(['日期','门店名称','门店编号','营业额','商品原价','餐盒收入','配送收入','饿了么赠品补贴','其他收入','支出','平台服务费','商家活动补贴','商家优惠券补贴','商家配送补贴','商家其他补贴','商家补贴总额','饿了么补贴金额','预计订单收入','客单价','用户支付金额','有效订单数','无效订单数','预计损失'])
for i in file_name(adr):
excel = pd.ExcelFile(i) #实例化对象通过ExcelFile 获取下列sheet的个数,直接使用excel.sheet_names可以获取sheet名字
read_file = pd.read_excel(i,sheet_name=len(excel.sheet_names)-1,index_col=0) #通过read_excel读取,i 是路径 ,sheet_name是要打开的工作簿,可以是工作簿名字,也可以是索引,col确定标签行
#print(read_file)
read_file.drop(['总计'],inplace=True,axis=0) #删除标签行里指定字符的行,axis=0为行,1为列,inplace为重新赋值
tr_read_file = np.array(read_file) #通过array以及tolist把DF转化为list
read_list = tr_read_file.tolist()
#print(read_list)
for i in read_list: #把获取到的数据写入
write.writerow(i)
f.close() #关闭表格
https://www.lanzouj.com/i5ayo2f 打包后的文件
解决了。。是因为脚本打包以后找不到adr = os.path.dirname(__file__)找不到__file__这个对象改成以下即可。
[Python] 纯文本查看 复制代码 adr = os.path.dirname(os.path.realpath(sys.argv[0])) |