第13章:文件和流

第13章:文件和流
大纲:
1.读文件和写文件
r:读
w:写
r+:文件可读写,如果文件不存在,会抛出异常,存在则会从当前位置写入新内容,通过seek函数可以改变当前位置,也就是改变文件的指针
w+:文件可读写,如果文件不存在,会创建一个新文件,存在则会清空文件,并写入新内容
a+:文件可读写,如果文件不存在,会创建一个新文件,存在则将新写入的内容加到原文件的后面,也就是说,使用a+打开已经存在的文件,文件指针已经在文件的结尾了
2.管道输出
3.读行和写行
4.使用FileInput对象读取文件
write(string):向文件写入内容,该函数会返回写入文件的字节数
read([n]):读取文件的内容,n是一个整数,表示从文件指针指定的位置开始读取的n个字节,如果不指定n,该函数会读取从当前位置往后的所有字节,该函数会返回读取的数据。
seek(n):重新设置文件指针,也就是改变文件的当前位置,如果使用write函数,需要使用seek(0)重置文件指针
close():关闭文件,对文件进行读写操作后,关闭文件是一个好习惯
(1)读文件和写文件

#以写模式打开test.txt文件
f=open('F:\\test1.txt','w')
#向test1.txt文件中写入“I love”
print(f.write("I love "))
print(f.write("python"))
f.close()
#以读模式打开test.txt文件
f=open('F:\\test1.txt','r')
print(f.read(7))
print(f.read(6))
f.close()
try:
    f=open('F:\\test1.txt','r+')#不存在则抛出异常,存在则从当前位置写入
except Exception as e:
    print(e)
finally:
    f.close()
#不存在则创建一个新文件,存在则将新写入的内容加到原文件的后面
f=open('F:\\test1.txt','a+')
print(f.write('hello'))
f.close()

f=open('F:\\test1.txt','a+')
print('---1-----')
print(f.read())#为空,因为此致指针在末尾
f.seek(0)
print('---2-----')
print(f.read())
f.close()
try:
    f = open('F:\\test1.txt', 'w+')#不存在则创建一个新文件,存在则会清空文件,并写入新内容
    print(f.read())#为空
    f.write('song')
    f.seek(0)
    print(f.read())
finally:
    f.close()

(2)管道输出( | )
前一个命令的输出会作为后一个命令的输入


```python
#从标准输入读取所有的数据,并按行将数据保存在列表中,然后过滤出所有包含‘readme’的行,并输出这些行
import sys
import os
import re
#从标准输入读取所有的数据
text=sys.stdin.read()

files=text.split(os.linesep)#os.linesep 行分隔符
for file in files:
    result=re.match('.*readme.*',file)
    if result!=None:
        print(file)
print('-------')

(3)读行与写行

import os
f=open('F:\\test1.txt','r+')
url=''
while True:
    url=f.readline()
    url=url.rstrip()#rstrip() 去掉前后空格
    if url=='':
        break
    else:
        print(url)
print('-----')
f.seek(0)
print(f.readline())
f.write('http://baidu.com'+os.linesep)#os.linesep 行分隔符
f.close()

f=open('F:\\test1.txt','a+')
urlList=['https://google.com'+os.linesep,'http://jd.com'+os.linesep]
f.writelines(urlList)
f.close()
print('-----')

(4)使用FileInput对象读取文件
readLines:全部读出到内存里,会占用大量内存
FileInput:会进入缓存,用多少出多少

import fileinput
fileobj=fileinput.input('F:\\test1.txt')#用于返回fileinput对象的
print(type(fileobj))
print(fileobj.readline().rstrip())#rstrip() 去掉前后空格
for line in fileobj:
    line=line.rstrip()
    if line !='':
        print(fileobj.lineno(),':',line)#lineno() 行号
    else:
        print(fileobj.filename())







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值