python如何判断文件属于文本类型的?
即使把二进制文件的后缀换成txt,也能判断是否是文本类型文件?
网友回复
在 Python 中,可以通过检查文件内容来判断文件是否为文本类型,而不仅仅是依赖文件扩展名。以下是一些常用的方法:
1. 使用 chardet 库检测文件编码chardet 是一个常用的库,可以检测文件的编码方式。如果文件是文本类型,通常可以检测到有效的编码。
import chardet def is_text_file(file_path): with open(file_path, 'rb') as f: raw_data = f.read() result = chardet.detect(raw_data) # 如果检测到的编码置信度较高,则认为是文本文件 return result['confidence'] > 0.7 and result['encoding'] is not None # 示例 file_path = 'example.txt' print(is_text_file(file_path)) # True 或 False2. 尝试解码文件内容
通过尝试将文件内容解码为字符串,如果解码成功,则可能是文本文件。
def is_text_file(file_path): try: with open(file_path, 'rb') as f: raw_data = f.read() # 尝试用常见编码解码 raw_data.decode('utf-8') return True except UnicodeDecodeError: return False #...
点击查看剩余70%
3中方式:
使用 python-magic 检测文件类型import magic def is_text_file(filepath): """ 使用 `python-magic` 检测文件是否为文本文件。 :param filepath: 文件路径 :return: 如果是文本文件返回 True,否则返回 False """ # 获取文件的MIME类型 mime = magic.Magic(mime=True) file_type = mime.from_file(filepath) # 检查MIME类型是否以 text/ 开头,或是否为常见的文本类型 return (file_type.startswith('text/') or file_type in ['application/json', 'application/javascript', 'application/xml', 'application/x-yaml'])2、使用启发式方法检测文件内容
def is_text_file(filepath, block_size=512): """ 使用启发式方法检测文件是否为文本文件。 :param filepath: 文件路径 :param block_size: 读取的块大小,默认为 512 字...
点击查看剩余70%
acejs代码编辑器如何调用openai api实现选择代码修改与代码自动补全?
ace.js如何获取选择文本的开始和结束行数?
如何把qwen code cli或gemini cli的免费调用额度换成http api对外开放接口?
如何限制windows10电脑只能打开指定的程序?
python如何调用ai大模型实现web网页系统的功能测试并生成测试报告?
有没有免费进行web网站ai仿真人测试生成测试报告的mcp服务或api?
Context Engineering到底是啥,有什么用?
如何使用Google veo 3+高斯溅射(Gaussian Splatting)技术生成4d视频?
浏览器中如何实时调用摄像头扫描二维码?
grok4、gemini2.5pro、gpt5、claude4.1到底谁的编程能力更强一些?