Python 文件写入顺序不一致 if与for

敛丨半世癫狂 2018-06-28 04:40:01
贴代码:
def wwwwww(h):
with open('wxk.txt','a') as ssss:
if h==11:
ssss.write('ssss')
print(h==11)
for i in range(h):
ssss.write(str(i))
if i==9:
wwwwww(i)
def cc(h):
if h==11:
print('ssss')
print(h==11)
for i in range(h):
print(str(i))
if i==9:
cc(i)
wwwwww(11)
cc(11)

如上述代码,在控制台输出如下

文件内容如下:

请问为什么两者顺序不一样
...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostgoodbye 2018-06-29
  • 打赏
  • 举报
回复
引用 4 楼 ghostgoodbye 的回复:
with open as ssss中ssss.write('ssss')并不会立即写入,默认情况下要退出with open之后才会写入文件。
一共有两个地方调用wwwwww函数,分别是wwwwww(9)和wwwwww(11)。
由于wwwwww(9)先执行完成,所以先写入了012345678
然后执行wwwwww(11),后写入了ssss012345678910

当然可以调用file.flush()实现立即写入。比如:
def wwwwww(h):
with open('wxk.txt','a') as ssss:
if h==11:
ssss.write('ssss')
print(h==11)
for i in range(h):
ssss.write(str(i))
ssss.flush()
if i==9:
wwwwww(i)
def cc(h):
if h==11:
print('ssss')
print(h==11)
for i in range(h):
print(str(i))
if i==9:
cc(i)
wwwwww(11)
cc(11)

少加了ssss.flush()
ghostgoodbye 2018-06-29
  • 打赏
  • 举报
回复
with open as ssss中ssss.write('ssss')并不会立即写入,默认情况下要退出with open之后才会写入文件。
一共有两个地方调用wwwwww函数,分别是wwwwww(9)和wwwwww(11)。
由于wwwwww(9)先执行完成,所以先写入了012345678
然后执行wwwwww(11),后写入了ssss012345678910

当然可以调用file.flush()实现立即写入。比如:
def wwwwww(h):
with open('wxk.txt','a') as ssss:
if h==11:
ssss.write('ssss')
print(h==11)
for i in range(h):
ssss.write(str(i))

if i==9:
wwwwww(i)
def cc(h):
if h==11:
print('ssss')
print(h==11)
for i in range(h):
print(str(i))
if i==9:
cc(i)
wwwwww(11)
cc(11)
敛丨半世癫狂 2018-06-29
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
单步跟踪一下看看运行时的流程

这个要怎么跟踪啊
oyljerry 2018-06-28
  • 打赏
  • 举报
回复
单步跟踪一下看看运行时的流程
敛丨半世癫狂 2018-06-28
  • 打赏
  • 举报
回复
顶一下,别沉啊

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧