鱼C论坛

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

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

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

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

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

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

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

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


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

PS D:\wpp>

没有一个和4801216能吻合上
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-14 09:37:29 From FishC Mobile | 显示全部楼层
哦,好像差10多万个回车
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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




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

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-14 10:01:23 | 显示全部楼层
应该是在 文件打开层面获取到文件大小,你看到的参数是走到了窗口层
  1. file=list(open(filepath,"r",encoding="utf-8"))
复制代码

  1. import os
  2. stat_info = os.stat('new_file.txt')
  3. size = stat_info.st_size
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  3. root = Tk()

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

  12. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我主要想获取text控件里容纳了多少字节
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 21:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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