Python3.x基础学习-文件基本操作和with用法

Posted Johnsonbug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3.x基础学习-文件基本操作和with用法相关的知识,希望对你有一定的参考价值。

文件基本操作


1 什么是文件
侠义说:文本文件:广义说:超文本文件,图片,声音,超链接,视频
2.文件的分类 文件大体上可以分为两类,文本文件和二进制文件
3.文件的作用 使用文件的目的是把一些数据存储存放起来
4.使用文件的流程
我们操作文件的流程一般是 打开文件,读写文件,关闭文件。通过程序操作文件的流程也是这三步
首先打开文件,然后读写文件,最后关闭文件

 

写文件
file = open(test1.py,mode=w)
file.write(hello johnson)
file.close()
#
# # 写入中文
# # python读写用的是gbk编码,pycharm用的是utf-8
#
file = open(test.txt,mode=w,encoding=utf-8)
file.write(我叫强森,俗称你爸爸)
file.close()

# wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除
# 如果该文件不存在,即创建新文件。一般用于非文本文件如图片
file = open(‘test.txt‘,‘wb‘)
file.write(b‘xe6x88x91xe5x8fxabxe5xbcxbaxe6xa3xaexefxbcx8cxe4xbfx97‘)
file.close()

# w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,
# 即 原有内容会被删除。如果该文件不存在,创建新文件。

file = open(‘test.txt‘,‘w‘)
file.write(‘zheshigeshenmewanyi‘)
file.close()
 

 

读文件
file = open(test.txt,mode=r,encoding=utf-8)
print(file.read())
file.close()

# r以只读方式打开文件。文件指针将会放在文件的开头。这是默认模式。
file = open(‘test.txt‘,‘r‘,encoding=‘utf-8‘)
print(file.read())
file.close()

# rb以二进制打开一个文件用于只读。文件的指针将会用在文件的开头
# 一般用于 非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的bytes字符串类型
file = open(‘test.txt‘,‘rb‘)
print(file.read())
file.close()

# r+ 打开一个文件用于读写。文件指针将会放在文件的开头
file = open(‘test.txt‘,‘r+‘)
file.write(‘johnson‘)
file.close()
 

 

 追加

file = open(test.txt,mode=a,encoding=utf-8)
file.write(相加就加)
file.close()

# a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾
# 也就是说,新的内容将会被写入到已有内容之后。如果文件不存在。创建新文件,进行写入
file = open(‘test.txt‘,‘a‘)
file.write(‘what is the fuck‘)
file.close()

# 打开一个文件用于读写。如果该文件已存在。文件指针会放在文件的结尾
# 也就是说,新的内容将被写入已有内容之后。如果该文件不存在,创建新文件进行写入

file = open(‘test.txt‘,‘a+‘)
file.read()
file.close()
 

 

read()方法

# 调用read()会一次性读取文件的所有内容,如果文件有10G,内存就爆了,会导致程序卡死
# 所以保险起见,可以反复使用read(size)方法,每次最多读取size个字符的内容。

file = open(test.txt,r+,encoding=utf-8)
print(file.read(10))
file.close()
readlines() 
# readlines() 一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来
file = open(test.txt,r,encoding=utf-8)
print(file.readlines())
file.close()
readline()

# readline 每次读取一行,并且自带换行功能 每一行末尾会读到

# 可以指定读取的字符个数,下一次读取会从此位置开始
file = open(test.txt,r,encoding=utf-8)
ret = file.readline(5)
print(ret)
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())

 

# 循环读取file句柄是一个可迭代的对象,因此,可以循环读取文件中的内容,每次读一行。
file = open(test.txt,r,encoding=utf-8)
for i in file:
    print(i,end= )
file.close()

 

write()和writelines()

 

# 写入write 和writelines

file = open(test.txt,w,encoding=utf-8)
list =[hello,world,jjj,john]
# for i in list:
#     file.write(i+‘
‘)
file.writelines(list)
file.close()

 with用法

正常操作文件读写的时候,执行完毕后都需要close,但是重复的close增加了重复的工作,而且有时候可能会忘记增加,所以对应来了个with

file = open(test.txt,r,encoding=utf-8)
print(file.read())
file.close()

# 使用with 方法操作文件,你可以不用关闭文件,会自动关闭文件

with open(test.txt,r,encoding=utf-8) as f:
    print(f.read())


# with内部实现了 __enter__和 __exit__方法,会自动关闭文件

class Foo:
    def __init__(self):
        print(---init---)

    def __enter__(self):
        print(---enter---)

    def __exit__(self,exc_type,exc_val,exc_tb):
        print("---exit---")

foo = Foo()
with foo:
    print(读取文件)
print("最后一行代码")

 

以上是关于Python3.x基础学习-文件基本操作和with用法的主要内容,如果未能解决你的问题,请参考以下文章

Python3.x基础学习-UDP和TCP用法

Python3.x基础学习-类--类属性和实例属性

Python3.x基础学习-类--多继承多态

Python3.x基础学习-函数用法

Python3.x基础学习-生成器用法

Python3.x:基础学习