Python文件操作,看这篇就足够!

Python绿色通道

共 5259字,需浏览 11分钟

 ·

2021-10-10 09:58

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包

文 |沐沐
来源:GOGO数据「ID: mu_science」


文件的存储方式


在计算机中,文件是以二进制的方式保存在磁盘上的
文本文件二进制文件

文本文件可以使用文本编辑软件查看
本质上还是二进制文件

二进制文件保存的内容不是给人直接阅读的,而是提供给其她软件使用的
二进制文件不能使用文件编辑软件查看

文件基本操作

在计算机中要操作文件一共包含三个步骤:
1.打开文件
2.读、写文件

读 将文件内容读入内容
写 将内存内容写入文件

不同模式打开文件的完全列表,更多详情请点击原文阅读

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


 文件打开模式有很多,但是我们实际用到的就只有六种。

我们总结一下主要用到的是下面六种。


模式可做操作若文件不存在是否覆盖文件原来内容
r只读报错——
r+可读、可写报错
w只写创建
w+ 可读、可写创建
 
a  只写创建否,追加写
a+可读、可写创建否,追加写


只读模式打开文件——只读(r)


# 1.只读模式打开文件
file = open('read.txt')

# 2. 读取文件内容
text = file.read()
print(text)

# 3.关闭文件
file.close()

'''
Hello world
123456
python
'''

文件若不存在报错:




读写模式打开文件——读写模式(r+)


# 1.打开文件
f = open('read.txt''r+')

# 2. 写入文件并且读取文件内容
f.write('666666')
text = f.read()
print(text)

# 3.关闭文件
f.close()

'''
world
123456
python
666666666666
'''


数据写入之前:




数据写入之后:


替换掉相同长度的内容


文件若不存在报错:





写模式打开文件——写模式(w)


# 1.只写模式打开文件
f = open('read.txt''w')

# 2. 写入文件
f.write('abcdefg')

# 3.关闭文件
f.close()
print('数据写入完毕!')
'''
数据写入完毕!
'''


数据写入之前:




数据写入之后:




这种操作会删除原来的文件内容,
重新写入Python,

并且把光标放在文件最开始。


若文件不存在,系统会创建该文件夹并重新写入内容



读写模式打开文件——读写模式(w+)


# 1.读写模式打开文件
f = open('read.txt''w+')

# 2. 写入文件
for i in f:
    print(i)
f.write('python! ')

# 3.关闭文件
f.close()
print('数据写入完毕!')
'''
数据写入完毕!
'''


数据写入之前:




数据写入之后:



这种操作会删除原来的文件内容,重新写入Python,

并且把光标放在文件最开始。


若文件不存在,系统会创建该文件夹并重新写入内容



利用这个原理所以文件写模式(w)、读写模式(w+)还可以用作删除文件内容。


因为他们整个工作原理就是把文件原来的内容删除,然后写入新的内容。

如果我们写入的内容为空,那么不就是删除文件内容。


# 1.读写模式打开文件
f = open('read.txt''w+')

# 3.关闭文件
f.close()
print('什么都不执行!')
'''
什么都不执行!
'''

数据写入之前:



数据写入之后





写模式打开文件(追加内容)——写模式(a)



'''
# 1.写模式打开文件
f = open('read.txt', 'a')

# 2. 写入文件内容
f.write('ppppppppppppp')

# 3.关闭文件
f.close()
print('代码执行结束!')
'''

代码执行结束!
'''


数据写入之前:



数据写入之后



可以看到是在原先内容的基础上在文末追加新的内容!


若文件不存在,系统会创建新的文件夹并写入内容




读写模式打开文件(追加内容)——读写模式(a)



# 1.读写模式打开文件
f = open('read.txt''a+')

# 2. 写入文件内容
f.write('WWWWWWWWW')

# 3.关闭文件
f.close()
print('代码执行结束!')
'''
代码执行结束!
'''


数据写入之前:



数据写入之后



可以看到是在原先内容的基础上在文末追加新的内容!


若文件不存在,系统会创建新的文件夹并写入内容




二进制模式打开文件


我们看到了在文件打开模式中有以下模式:rb、wb……有这种带 b 的。


什么意思呢?

就是用二进制的方式打开文件。


# 1.读写模式打开文件
f = open('img.png')

# 2. 写入文件内容
for i in f:
    print(i)
print('代码执行结束!')

# 3.关闭文件
f.close()

'''
UnicodeDecodeError: 'gbk' codec can't decode byte 0xb8 in position 19: illegal multibyte sequence
'''


很明显,我们出现了以下错误:


UnicodeDecodeError: 'gbk' codec can't decode byte 0x82 in position 0: incomplete multibyte sequence


主要原因是因为编码的问题,可能是因为0x82这个字节在gbk编码中没有这个字符,

可能原字符是两个字节,在gbk里被解析成了一个字节,导致字符不存在。


这就是我们文件打开方式需要使用二进制读取的原因。


# 1.读写模式打开文件
f = open('img.png''rb')

# 2. 写入文件内容
for i in f:
    print(i)
print('代码执行结束!')

# 3.关闭文件
f.close()

'''
代码执行结束!
'''




文件操作


open 函数负责打开文件,并且返回文件对象

read /write / close 三个方法都需要通过文件对象 来调用


序号函数/方法说明
1open打开文件,并且返回文件操作对象
2read将文件内容读取到内存
3write将指定内容写入文件
4close关闭文件


# 1.打开文件
file = open("read.txt")

# 2. 读取文件内容
text = file.read()
print(text)

# 3.关闭文件
file.close()



文件和文件夹的操作


在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,

具体步骤如下:


导⼊os模块

import os


使⽤ os 模块相关功能


1、文件重命名

os.rename(⽬标⽂件名, 新⽂件名)
import os

# 重命名文件
os.rename('read.txt''new_read.txt')
print('重命名成功!')

'''
重命名成功!
'''


2、删除文件

os.remove(⽬标⽂件名)
import os
# 删除文件
os.remove('new_read.txt')
print('删除成功!')
'''
删除成功!
'''


3、创建文件夹

os.mkdir(⽂件夹名字)
import os

# 创建文件夹
os.mkdir('read.txt')
print('新文件夹创建成功!')
'''
新文件夹创建成功!
'''



4、删除文件夹

os.rmdir(⽂件夹名字) 
import os

# 删除文件夹
os.rmdir('read.txt')
print('文件删除成功!')
'''
文件删除成功!
'''


5、获取当前目录

os.getcwd()
import os

print(os.getcwd())
'''
E:\python\project++\文件操作
'''


6、改变默认目录

os.chdir(⽬录)
import os

os.chdir('E:\python\project++')
print(os.getcwd())
'''
E:\python\project++
'''


7、获取目录列表

os.listdir(⽬录)
import os

print(os.listdir('E:\python\project++'))
'''
['.idea', 'college', 'Daily test', 'mult_xiangqin', 'pandas技巧', 'travel_summer', '动图获取', '匿名函数', '打针', '文件操作', '汉服小姐姐', '猫眼_动态网站', '王思聪语录', '瓜子二手车', '网易文胸', '腾讯招聘', '萌妹子', '虎牙']
'''




总结



1. 本文详细介绍了如何用Python操作文件以及文件夹,
有兴趣的读者可以尝试自己动手练习一下。

2. 本文仅供读者学习使用,不做其他用途!

推荐阅读

  1. 140篇!Python 数据科学实战项目总结.pdf

  2. 人人都要学 Python 的时代过去了!

  3. 知乎:电脑长时间不关机会缩短电脑寿命吗?



浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报