设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10939|回复: 2
打印 上一主题 下一主题

新手求教!关于open的问题

[复制链接]

2

主题

0

好友

28

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-12-11 22:38:02 |只看该作者 |倒序浏览
本帖最后由 littlewhite 于 2017-12-11 22:52 编辑

f=open(to_file,'w+')
f.write(indata)
f.close
open(to_file,'w+').write(indata)
open(to_file,'w+').close

print(f)
print(open(to_file,'w+'))
print(type(f))
print(type(open(to_file,'w+')))

print(f.close)
print(open(to_file,'w+').close)
print(type(f.close))
print(type(open(to_file,'w+').close))

这是print出来的结果
<_io.TextIOWrapper name='ex2.txt' mode='w+' encoding='cp936'>
<_io.TextIOWrapper name='ex2.txt' mode='w+' encoding='cp936'>
<class '_io.TextIOWrapper'>
<class '_io.TextIOWrapper'>

<built-in method close of _io.TextIOWrapper object at 0x000001CCEA348DC8>
<built-in method close of _io.TextIOWrapper object at 0x000001CCEA348EA0>
<class 'builtin_function_or_method'>
<class 'builtin_function_or_method'>
感觉f被赋值后应该和open(to_file,'w+')性质功能都一样啊
为什么
f=open(to_file,'w+')
f.write(indata)
f.close


open(to_file,'w+').write(indata)
open(to_file,'w+').close
为什么这两段执行结果不一样啊
上面的就录入正常,
下面的录入的是空文本,重新建了个空文档然后覆盖了

回复

使用道具 举报

0

主题

0

好友

114

积分

注册会员

Rank: 2

沙发
发表于 2017-12-12 15:17:49 |只看该作者
第二段代码会把文件又打开一遍,导致前一句没有保存到文件中。所以是空文档。
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

板凳
发表于 2017-12-12 22:44:37 |只看该作者
你把 f 看作一个光标,它虽然被赋的是open(to_file,'w+'),但是不代表它就是重新打开一个新的to_file文件
f=open(to_file,'w+')--------------f位于被打开文件的开头
f.write(indata)---------------------f位于写完indata后的位置
f.close------------------------------由于被close光标消失
》》》》》》》》》》》》》》》》》》》》》》》》》》》
这样也能很好的解释下面的代码:
f=open(to_file,"w+")
f=write("AAAAAAAAAAAAAA")
f.close()
f.write("BBBBBBBBBBBBBBB")   ###最终写入的内容只有“AAAAAAAAAAAAAA”
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
换个思路,其实f=open(to_file,'w+'),之后的write 和close,感觉应该写成
open(to_file,'w+').write(indata).close() 这样连续式地才算完整,而不是和f.write,f.close表面意思这样
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
open(to_file,'w+').write(indata)###打开并清空to_file,写入indata
open(to_file,'w+').close ###打开并清空to_file,然后close
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-6-16 22:50 , Processed in 0.023398 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部