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'\xe6\x88\x91\xe5\x8f\xab\xe5\xbc\xba\xe6\xa3\xae\xef\xbc\x8c\xe4\xbf\x97')
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 每次读取一行,并且自带换行功能 每一行末尾会读到\n
# 可以指定读取的字符个数,下一次读取会从此位置开始
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+'\n')
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("最后一行代码")

猜你喜欢

转载自www.cnblogs.com/johnsonbug/p/12709979.html
今日推荐