咋能获取到和windows资源管理器显示的一样:
首先我们建立一个纯文本文件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能吻合上
哦,好像差10多万个回车 wp231957 发表于 2022-9-14 09:37
哦,好像差10多万个回车
是想获取文件字节数吗,os.path.getsize() 可以返回文件的字节数
或者 open 打开后,将文件指针移动到文件末尾(可以调用read() 或者 seek(0, 2) 都可以将文件指针移动到末尾)
然后调用 tell() ,返回的结果也是文件字节数
应该是在 文件打开层面获取到文件大小,你看到的参数是走到了窗口层
file=list(open(filepath,"r",encoding="utf-8"))
import os
stat_info = os.stat('new_file.txt')
size = stat_info.st_size
本帖最后由 阿奇_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() 阿奇_o 发表于 2022-9-14 10:13
你没搞清楚 encode() 是干嘛用的,就对它 len() 当然以为有问题,其实 它是 编码!
——以不同的特定规则 ...
我主要想获取text控件里容纳了多少字节
页:
[1]