吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1885|回复: 10
收起左侧

[已解决] 小白求助,大佬进来看看,关于python打包EXE的问题

[复制链接]
浮云。 发表于 2019-8-3 16:48
本帖最后由 浮云。 于 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]))

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

吾爱小洪 发表于 2019-8-3 17:14
你引入的这些扩展包的文件夹是否放在了打包的文件夹下呢
namedlxd 发表于 2019-8-3 17:23
kof21411 发表于 2019-8-3 18:07
隰则有泮 发表于 2019-8-3 20:19
os.path打包前后会不同。for循环前先print file_name(adr) 再打包看看输出什么

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
浮云。 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 浮云。 发表于 2019-8-4 09:41

没有报错,能运行,但是运行到write.writerow(['日期'])这里的时候就没有后面的运行部分了
 楼主| 浮云。 发表于 2019-8-4 09:43
kof21411 发表于 2019-8-3 18:07
引入的库没有被打包到一起

我电脑上是都安装了那些库的。。
kof21411 发表于 2019-8-4 11:25
浮云。 发表于 2019-8-4 09:43
我电脑上是都安装了那些库的。。

打包软件没有帮你把你脚本要用到的库打包到exe里
namedlxd 发表于 2019-8-4 12:28
浮云。 发表于 2019-8-4 09:41
没有报错,能运行,但是运行到write.writerow(['日期'])这里的时候就没有后面的运行部分了

你adr里面有值吗? 输出看一下
 楼主| 浮云。 发表于 2019-8-5 08:28
namedlxd 发表于 2019-8-4 12:28
你adr里面有值吗? 输出看一下

源代码跑的时候是有的,但是打包以后就没有了。。这是为什么
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 02:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表