遇到问题解决问题python篇2

关于python中文件读写的操作中出出现了字符串和字节流的概念,因为我基础知识太薄弱了,就根据代码和代码结果进行了理解。

#1
fname = input("please input target file:")
fo = open(fname,"r")
for line in fo.read():
    print(line)
fo.close()
#2
fname = input("please input target file:")
fo = open(fname,"r")
for line in fo.readline():
    print(line)
fo.close()
#3
fname = input("please input target file:")
fo = open(fname,"r")
for line in fo.readlines():
    print(line)
fo.close()

上述代码的运行结果分别为

#1

please input target file:7.1.txt
h
e
l
l
o
 
m
i
y
a

........

#2

please input target file:7.1.txt
h
e
l
l
o
 
m
i
y
a

#3

please input target file:7.1.txt
hello miya

this is my gift


Process finished with exit code 0

通过对比代码结果和下列表格内容,可以理解

操作方法含义
<file>.readall()

读入整个文件内容,返回一个字符串或字节流*

(字符串或字节流取决于文件打开模式,如果是文本方式打开,返回字符串;否则返回字节流)

[但是找不到这个指令]

<file>.read(size=-1)从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流
<file>.readline(size=-1)从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或字符流
<file>.readlines(hint=-1)从文件中读入所有行,以每行为元素形成一个列表,如果给出参数,读入hint行

所以代码#3就是输入一个文件名,然后打开文件并赋值给文件对象变量fo。文件的全部内容通过fo.readlines()方法读入到一个列表中,列表的每个元素是文件的每一行内容,然后通过for-in方式遍历列表,处理每行内容。

但上述方法很浪费内存

所以可以

fname = input("please input target file:")
fo = open(fname,"r")
for line in fo:
    print(line)
fo.close()

最合理的是逐行读入内容到内存,并逐行处理,在这里将文件本身作为一个行序列,遍历文件的所有行可以直接完成 。

最后解释一下字符串和字节流

字符串是字符的序列表示,可以用单引号、双引号、三引号表示,三引号可以包含双引号,以此类推。

print()函数可以直接打印字符串,这是输出字符串的常用方式,字符串是给人看的;

字节流是字节序列,可以直接存储在硬盘,字节流和字符串之间的映射编码/解码。字节流是给计算机看的,给计算机传输或者保存的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值