鱼C论坛

 找回密码
 立即注册
查看: 1123|回复: 2

[已解决]文件打开/读入

[复制链接]
发表于 2020-7-18 06:40:23 | 显示全部楼层 |阅读模式

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

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

x
fname = input('请输入要打开的文件名称(包含路径):')   # 用户输入这个文件的名称,并保存为fname
fo = open(fname,'r')   # 以只读模式打开这个文件,文件句柄(handle,中间媒介)为fo
txt = fo.read() #使用read,将文件一次性读取,并保存为一个字符串txt
#....中间省略n行(对全文txt进行处理的过程)
fo.close()


我第2行'r' 已经把fname以只读方式打开了,为啥第3行还要用read再打开一次?这不是画蛇添足?
为啥不把第2行和第3行合并为:txt = fname.read()
或者干脆就只要第2行就够了:txt = open(fname,'r')
最佳答案
2020-7-18 06:44:59
open() 函数用于打开文件,返回的是一个文件对象,read() 是用于读取文件内容,作用不一样的哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-18 06:44:59 | 显示全部楼层    本楼为最佳答案   
open() 函数用于打开文件,返回的是一个文件对象,read() 是用于读取文件内容,作用不一样的哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 07:21:39 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-18 07:24 编辑



我第2行'r' 已经把fname以只读方式打开了,为啥第3行还要用read再打开一次?这不是画蛇添足?


open 是打开文件,而不是读取文件,open 返回的是一个文件对象,当你 f.read() 、readline()、readlines() 的时候才是读取文件内容

为啥不把第2行和第3行合并为:txt = fname.read()?或者干脆就只要第2行就够了:txt = open(fname,'r')?


open 的第一个参数是文件路径字符串,第二个参数的打开模式,你怎么能把文件路径直接 read() 呢,read() 是文件对象的方法,而不是字符串的方法

这些算是语法规则吧,就不用纠结这些了,也并不是画蛇添足,你打开一个文件对象后,可以自行选择如何读取文件,比如 read(n) 里面可以填个参数,读取的字符数

各种用法有各种用法的功能,存在即合理,不必纠结

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 23:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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