Python打开文件获取到TextIOWrapper对象而非文件代码的问题
问题原因及解决办法
你现在打印的是文件对象的描述字符串,不是文件内容——open()函数返回的是一个io.TextIOWrapper对象,直接转成字符串只会输出它的元信息(比如文件名、打开模式),不会自动读取文件里的实际内容。
核心错误点
代码里FILE_TEXT = str(FILE_OBJECT)这步完全错了,这不是读取文件内容的方式,而是把文件对象转成了它的描述文本,后续循环操作全在处理这个描述字符串,根本没碰文件里的真实内容。
正确的文件读取方式
读取文件内容常用三种方法:
FILE_OBJECT.read():一次性读取整个文件的所有内容,返回一个字符串FILE_OBJECT.readlines():按行读取,返回每行内容组成的列表- 直接迭代文件对象:
for line in FILE_OBJECT:,逐行处理
修正后的代码示例(假设你要按文件每行内容创建目录)
先处理Windows路径的转义问题:路径里的\要写成双反斜杠\\,或者用原始字符串前缀r,避免转义字符出错:
import os # 用原始字符串处理Windows路径,避免转义问题 file_path = r'C:\DOWNLOADS\COMMISSIONS.txt' # with语句自动管理文件关闭,比手动close更可靠 with open(file_path, 'rt', encoding='utf-8') as file_obj: # 逐行读取文件内容 for line in file_obj: # 去掉每行末尾的换行符和空白字符 dir_name = line.strip() if not dir_name: continue # 用标准方法拼接路径,适配不同系统 full_dir_path = os.path.join(r'C:\DOWNLOADS', dir_name) # 创建目录,exist_ok=True避免目录已存在时报错 os.makedirs(full_dir_path, exist_ok=True) print(f"已创建目录: {full_dir_path}") print('操作完成')
额外说明
with语句会自动关闭文件,不用手动调用close(),更安全os.path.join()是拼接路径的标准方法,比手动拼字符串更稳妥strip()能去掉每行首尾的换行、空格等空白字符,避免创建带多余空格的目录
内容的提问来源于stack exchange,提问作者Huw Piggin
相关产品推荐
相关产品推荐

