鱼C论坛

 找回密码
 立即注册
查看: 1725|回复: 10

[已解决]for in 问题

[复制链接]
发表于 2020-3-2 05:24:38 | 显示全部楼层 |阅读模式
2鱼币

name.txt文件里放的是:諸葛亮|關羽|劉備|曹操|孫權|關羽|張飛|呂布|周瑜|趙雲|龐統|司馬懿|黃忠|馬超

with open("name.txt") as f:
    for line in f:

请问for in的后面加一个文件,代表什么意思
最佳答案
2020-3-2 05:24:39
这个 f 是 _io.TextIOWrapper,就相当于一个迭代器:
>>> with open("d:/test.txt", encoding="utf-8") as f:
        next(f)
        next(f)
        next(f)
        next(f)
        next(f)

        
'测试一,123123\n'
'234234\n'
'ABC\n'
'dddkkk'
Traceback (most recent call last):
  File "<pyshell#28>", line 6, in <module>
    next(f)
StopIteration

最佳答案

查看完整内容

这个 f 是 _io.TextIOWrapper,就相当于一个迭代器:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 05:24:39 | 显示全部楼层    本楼为最佳答案   
这个 f 是 _io.TextIOWrapper,就相当于一个迭代器:
>>> with open("d:/test.txt", encoding="utf-8") as f:
        next(f)
        next(f)
        next(f)
        next(f)
        next(f)

        
'测试一,123123\n'
'234234\n'
'ABC\n'
'dddkkk'
Traceback (most recent call last):
  File "<pyshell#28>", line 6, in <module>
    next(f)
StopIteration
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 07:02:18 From FishC Mobile | 显示全部楼层
f在这里类似于文件里行内容的迭代,
你在循环里print一下line就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 07:51:34 From FishC Mobile | 显示全部楼层
把f中每一行的值赋给line这个变量
每赋值一次进行一次for循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 09:05:53 | 显示全部楼层
因为f是打开的文件,所以
for line in f就是在文件里
一行一行的迭代
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 09:49:43 | 显示全部楼层
表示遍历文件的每一行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 14:50:29 | 显示全部楼层
对f文件每一个文字依次读取
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 15:53:40 | 显示全部楼层
你这个 open ”url” as f:
f 就是代表这个文件
for line in f:
就是把f 文件的每一行打出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-2 22:32:50 | 显示全部楼层
wp231957 发表于 2020-3-2 07:02
f在这里类似于文件里行内容的迭代,
你在循环里print一下line就知道了

with open('name.txt') as f:
    for line in f:
        print(line,end='\t')

我这样写print

此时的name.txt文件是这样的
諸葛亮|關羽|劉備|曹操|孫權|關羽|張飛|呂布|周瑜|趙雲|龐統|司馬懿|黃忠|馬超
aa
ss
dd


print过后是这样的
諸葛亮|關羽|劉備|曹操|孫權|關羽|張飛|呂布|周瑜|趙雲|龐統|司馬懿|黃忠|馬超
        aa
        ss
        dd

为什么是这样。print里的end='\t',结尾的‘\n'换成'\t'。但为什么会出现这样的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-2 22:44:59 | 显示全部楼层
qiuyouzhi 发表于 2020-3-2 09:05
因为f是打开的文件,所以
for line in f就是在文件里
一行一行的迭代

那这是不是就相当于

for line in f.readlines()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 09:13:07 | 显示全部楼层
xueziheng 发表于 2020-3-2 22:44
那这是不是就相当于

for line in f.readlines()

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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