day09

≡放荡痞女 提交于 2019-11-30 00:51:14

基本的文件操作

什么是文件

文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位

如何使用文件

#  open(文件路径)
#  f = open(文件路径)
#  print(f)
#  可以在文件路径前加r,防止字符转义

read模式打开文件

#  f = open(文件路径, mode = 'r')
#  data = f.read()
#  print(data)
'''
读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容有由硬盘读入内存
'''

write模式打开文件

#  f = open(文件路径, ’w')
#  f.write(str)

打开文件三步骤

1、打开文件

2、读写

3、关闭文件

绝对路径

Windows系统绝对路径从盘符(C:、D:)开始写一个完整的路径

相对路径

相对于当前执行文件所在的文件夹

推荐使用相对路径

文件三种打开模式

文件操作的三种基础模式

r模式为read(默认)

w模式为write

a模式为append

文件读写内容

t模式为text(默认)

b模式为bytes(二进制文件)

r模式

只读模式,只能读不能写,文件不存在时报错

f = open('file.txt', mode='rt', encoding='utf8')
data = f.read()
print(data)
'''
f.read()读取文件指针会跑到文件的末端,如果再一次读取,读取的将是空格。
由于f.read()一次性读取文件的所有内容,如果文件非常大的话,可能会造成内存爆掉,即电脑卡死。因此可以使用f.readline()/f.readlines()读取文件内容。
readline()只读一行,而每次读取一个字符
readlines()读取整个文件,每次读取一行
for i in f.read(): #循环读出一个一个字符
for line in f:  #循环一行一行读出
每一行末尾默认有一个换行
'''
print(f.readalbe())  #判断文件是否可读

w模式

只能写,不能读,文件存在时清空文件再写入内容,文件不存在时创建文件后再写入内容

f = open('file.txt','wt',enconding='utf8')
print(f.readable())
f.write('slk')
f.close()

f = open('file.txt','wb')
f.write('中华人民共和国'.encode('unicode_escape'))  # 编码成bytes类型
'''
f.writelines(line)  #写入列表,自动拼接列表元素(必须是字符串),一行写入
'''

a模式

可以追加,文件存在时则在文件的末端写入内容,文件不存在时则创建文件后再写入内容

f = open('file.txt', mode='at', encoding='utf8')
f.write('slk')

文件打开读取二进制

b模式是通用的模式,因为所有的文件在硬盘中都是以二进制的形式存储的,需要注意的是:b模式读写文件,一定不能加上encoding参数,因为二进制无法再编码。

文件的高级应用

'''
#r+模式
r+的写入是,光标从头开始,替换字符
#w+
因为会清空文件,所以和w没有区别
#a+
默认光标在尾部

'''

三种新模式(不推荐)

#三种模式都是可写可读
#r+模式
'''
光标在文件头部,覆盖后面的字符
'''

#w+模式
'''
和w模式没有区别
'''

#a+模式
'''
默认光标在尾部
'''

#如果真的有需求,使用打开两个文件的方式
'''
import os
with open('file_r.txt', 'r', encoding = 'utf-8')as fr,\
    open('file_w.txt', 'w', encoding='utf-8')as fw:
    forline in fr:
        fw.write()

os.remove('file_r.txt')
os.rename('file_w.txt', 'file_w.txt')

'''

光标的高级应用

#中文字符3个字节,英文字母一个字节
#都需要用b模式打开文件
'''
seek(offset, whence = 0)  #offset是光标指针的字节偏移量;whence是位置,默认是在文件头,whence=1表示当前                        位置,whence=2表示文件尾

tell()  #返回光标当前位置,以字节为单位
truncate(size)  #只能使用可写模式打开,但是不能使用w或w+,这样会清空文件;要使用r+或者a或者a+;它会截                  断文件,只保留size以内的字节,当size=0时,相当于清空文件


read(n)  #读取前n个字符,中文英文都是一个字符,默认读取所有
'''
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!