鱼C论坛

 找回密码
 立即注册
查看: 2400|回复: 5

咋能获取到和windows资源管理器显示的一样:

[复制链接]
发表于 2022-9-14 09:32:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先  我们建立一个纯文本文件XXX.TXT   utf-8  格式  鼠标右键----有个文件大小:4801216字节

现在我们想在python+TKINTER环境下 获取这个4801216 这个数字

代码如下:
def load():
    filepath = filedialog.askopenfilename()
    file=list(open(filepath,"r",encoding="utf-8"))
    text.insert(INSERT,file)
    txtnum["text"]=str(len(text.get("1.0",END).encode("gbk")))
    print(len(text.get("1.0",END).encode("gbk")))
    print(len(text.get("1.0",END).encode("utf-8")))
    print(len(text.get("1.0",END)))
    tkinter.messagebox.showinfo("提示","导入成功 ")

获取了三个稀奇古怪的数值:
PS D:\wpp> & D:/Python37/python.exe d:/wpp/mac_gui.py
3859680------GBK
5006912------utf8
2712448------默认

PS D:\wpp>

没有一个和4801216能吻合上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-14 09:37:29 From FishC Mobile | 显示全部楼层
哦,好像差10多万个回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-14 09:52:02 | 显示全部楼层
wp231957 发表于 2022-9-14 09:37
哦,好像差10多万个回车




是想获取文件字节数吗,os.path.getsize() 可以返回文件的字节数

或者 open 打开后,将文件指针移动到文件末尾(可以调用read() 或者 seek(0, 2) 都可以将文件指针移动到末尾)

然后调用 tell() ,返回的结果也是文件字节数

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-14 10:01:23 | 显示全部楼层
应该是在 文件打开层面获取到文件大小,你看到的参数是走到了窗口层
file=list(open(filepath,"r",encoding="utf-8"))
import os
stat_info = os.stat('new_file.txt')
size = stat_info.st_size
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-14 10:13:11 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-9-14 10:17 编辑

你没搞清楚 encode() 是干嘛用的,就对它 len() 当然以为有问题,其实 它是 编码!
——以不同的特定规则进行编码 所得到的 字节码数据,自然和原来的 字符串大小  不一样!
另外,文件的大小和文件内容的大小,也是稍微有出入的。
from tkinter import Tk, filedialog
import os

root = Tk()

fpath = filedialog.askopenfilename(initialdir='.')
print('文件路径:', fpath)
print('文件大小(多少个字节):', os.path.getsize(fpath), 'bytes')
content = ''.join(open(fpath))
encoded = content.encode('utf-8')
print('文件内容编码后的字节形式:', encoded, type(encoded))
print('文件内容编码后的字节大小:',len(encoded))
print('内容重新解码后的字符串大小:', len(encoded.decode()))

root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-15 16:15:12 From FishC Mobile | 显示全部楼层
阿奇_o 发表于 2022-9-14 10:13
你没搞清楚 encode() 是干嘛用的,就对它 len() 当然以为有问题,其实 它是 编码!
——以不同的特定规则 ...

我主要想获取text控件里容纳了多少字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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