Python | 带你玩转Python的各种文件操作

Posted 朦胧的雨梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python | 带你玩转Python的各种文件操作相关的知识,希望对你有一定的参考价值。

本文概要

本篇文章主要介绍Python的各种文件操作,适合刚入门的小白或者对于文件操作基础不太牢固的同学,文中描述和代码示例很详细,看完即可掌握,感兴趣的小伙伴快来一起学习吧。

个人简介

☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持😝😝😝
🌖大家一起努力,共同成长,相信我们都会遇到更好的自己👊👊👊
🌗期待我的文章能给各位带来收获和解决问题的灵感🤩🤩🤩
🌟大家的三连是我不断更新的动力~😘😘😘

本文纲领

学习目标

一、掌握文件的路径、访问模式等基础知识

  • 计划任务

二、掌握文件读写操作

  • 计划任务

三、掌握文件的一些帅气操作

  • 计划任务

一.文件的路径介绍

1.绝对路径

  首先,绝对路径讲的就是一个文件的绝对位置(相当于包含了所有的目录信息),所有层级关系是一目了然的。例如:C:/Users/86134/Desktop/python(这是我电脑上Python项目文件夹的绝对路径),可以看到,它是在C盘–Users文件夹–86134文件夹–Desktop文件夹下的一个文件夹,这就是绝对路径反馈给我们的所有信息。

2.相对路径

  有些时候,文件夹太多了,想偷偷懒🤣,我们把需要操作的文件放在同一个目录下,这样通过解释器就可以直接在同级目录下找到这个文件(绝对路径就是从当前文件所在的文件夹开始的路径。),同样的,上面的路径,新建一个文件:123.txt。

它的绝对路径:C:/Users/86134/Desktop/python/123.txt
但是,它是在Python工程文件目录下的,可以直接这样写:相对路径:./123.txt( ./ 表示的是当前文件夹,可以省略)
是不是很惊喜,可以这样简洁,哇,真的很方便!!!🤩🤩🤩
另外强调一点其他的:

路径路径解释使用方法
…/123.txt是指从当前文件夹的上一级文件夹里查找 123.txt 文件…/ 表示的是上一级文件夹
  • 完成任务

二.文件的访问模式

1.文本模式

文本模式使用说明
“r”/“rt”只读,只能调用读函数,文件必须存在,否则失败,文件指针指向头字节。
“r+”可读可写读,读写函数都能调用,文件必须存在,否则失败,文件指针指向头字节。
“w”/“wt”擦除写,只能调用写函数,文件不存在时创建文件,文件指针指向头字节。
“w+”可读可写,读写函数都能调用,文件不存在时创建文件,文件指针指向头字节。
“a”/“at”附加写,只能调用写函数,文件不存在时创建文件,文件指针指向尾字节。
“a+”可读可写,读写函数都能调用,文件不存在时创建文件,文件指针指向尾字节。
  • 完成任务

2.二进制模式

二进制模式使用说明
“rb”只读,只能调用读函数,文件必须存在,否则失败,文件指针指向头字节。
“rb+”可读可写读,读写函数都能调用,文件必须存在,否则失败,文件指针指向头字节。
“wb”擦除写,只能调用写函数,文件不存在时创建文件,文件指针指向头字节。
“wb+”可读可写,读写函数都能调用,文件不存在时创建文件,文件指针指向头字节。
“ab”附加写,只能调用写函数,文件不存在时创建文件,文件指针指向尾字节。
“ab+”可读可写,读写函数都能调用,文件不存在时创建文件,文件指针指向尾字节。
  • 完成任务

文件的打开和关闭

在Python中,使用open(file, mode=‘r’, buffering=None, encoding=None)方法打开文件;
在Python中,使用close()方法关闭文件。

三.文件的读取和写入

1.读文件

  好了,通过前面基础知识的铺垫,终于要开始动手实践了,还记得那个123.txt的文本文件吗?我们写入一条字符串:I love you,对,没错,我爱你😉🥰😋,下面,我们来让解释器读取这个内容。

①使用read()函数

  使用read(path,mode)函数, 读取文件内容,可以指定读取长度。默认全部读取。

f = open('./123.txt', 'r')
#默认全部读取
con = f.read()
print(con)

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 
I love you

②使用readline()函数

  使用readline(path,mode)函数,可以简单理解,一行一行读取,遇到换行结束(123.txt再加入一句话换行写:My friend)。
  第一次读取:

f = open('./123.txt', 'r')
#读取一行
con = f.readline()
print(con)

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 
I love you
进程已结束,退出代码0

  第二次读取:

f = open('./123.txt', 'r')
con = f.readline()
#第二次读取
c = f.readline()
print(c)

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 
My friend
进程已结束,退出代码0

③使用readlines()函数

  使用readlines(path)函数,可以简单理解,多行读取,返回一个列表。

f = open('./123.txt', 'r')
con = f.readlines()
print(con)

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 
['I love you\\n', 'My friend']
进程已结束,退出代码0

2.写文件

①使用write()函数

  向文件中写数据,我们使用write(path)函数来完成。

f = open('./123.txt', 'w')
#加入数据
f.write('you')

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 

进程已结束,退出代码0

  效果图:

突然发现,我们之前的数据都没了,是不是我不爱你了,并不是,还记得文件的访问模式吗,知道你肯定忘了,“w”/“wt” 擦除写,只能调用写函数,文件不存在时创建文件,文件指针指向头字节。(细节看鼠标)。

  • 完成任务

四.文件操作(OS模块的使用)

1.创建文件夹

使用mkdir()函数

  创建文件夹,我们使用mkdir(filename)函数来完成。

import os
#创建示范文件夹
os.mkdir('示范')

  效果图:

2.获取文件属性

使用stat()函数

  查看一个文件属性时,我们使用stat(filename)函数来完成。

import os
#查看123.txt文件属性
con = os.stat('123.txt')
print(con)

  效果展示:

E:\\Python\\python.exe C:\\Users\\86134\\Desktop\\python\\文件操作.py 
os.stat_result(st_mode=33206, st_ino=3096224743955345, st_dev=3322609030, st_nlink=1, st_uid=0, st_gid=0, st_size=3, st_atime=1680681268, st_mtime=1680680620, st_ctime=1680621627)

进程已结束,退出代码0

3.删除文件

使用remove()函数

  删除一个文件时,我们使用remove(path)函数来完成。

import os
#删除一个文件
os.remove('123.txt')

其他常见操作:

函数操作说明
os.listdir()返回指定目录下的所有文件和目录名
os.removedirs()删除多个目录
os.path.dirname()获取路径名
os.rename()重命名
os.mknod()文件操作
os.chmod()修改文件权限与时间戳
  • 完成任务

六.结语

  Python操作文件的方法相比C/C++来说,就显示出了简洁和优雅两大优点,相信大家通过这篇文章已经掌握了文件的基本操作,好了,今天就分享到这里,谢谢大家的观看,有什么想法记得评论区告诉我!拜拜~✨ ✨ ✨

往期好文推荐

TOP🥇.Python | Python的自我介绍(前世今生)🏆🏆🏆综合热榜前十五🏆🏆🏆❤️❤️❤️

TOP🥈.Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)🏆🏆🏆❤️❤️❤️

TOP🥉.网页制作中如何添加背景图片🏆🏆🏆❤️❤️❤️

python数据分析基础008 -利用pandas带你玩转excel表格(中下篇)

文章要点

🐚作者简介:苏凉(专注于网络爬虫,数据分析)
🐳博客主页:苏凉.py的博客
👑名言警句:海阔凭鱼跃,天高任鸟飞。
📰要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!!
👉关注✨点赞👍收藏📂

🍺前言

上篇文章带着大家一起学习了在pandas中如何对excel表格进行创建和修改,还有一些基本的操作,接下来我们一起再深入的去了解pandas在excel中其他的一些有趣的操作吧!!
往期回顾:
1.python数据分析基础001 -matplotlib的基础绘图
2.python数据分析基础002 -使用matplotlib绘图(散点图,条形图,直方图)
3.python数据分析基础003 -numpy的使用(详解)
4.python数据分析基础004 -numpy读取数据以及切片,索引的使用
5.python数据分析基础005 -pandas详解_pandas入门这一篇就足够了
6.python数据分析基础006 -利用pandas带你玩转excel表格(上篇)
7.python数据分析基础007 -利用pandas带你玩转excel表格(中上篇)

🍁(一)利用pandas将excel中的数据绘制成可视化图形

实例:对这样的一组数据进行数据可视化,绘制成一张条形图

🔥1.在excel中实现

在excel中插入一个柱状图即可。

若需将他进行从大到小来进行比较则需要在原数据上先进行排序。
最后在进行标题以及坐标轴的美化
效果如下:

要在python中实现上述在excel中的操作,该如何做呢?下面就让我们在python下实现吧!利用pandas和matplotlib绘制出来的图形更直观。

🔥2.在pandas中实现

  1. 导入pandas以及matplotlib模块
import pandas as pd
from matplotlib import pyplot as plt
  1. 读取excel表格数据,并将其进行排序
student_data = pd.read_excel('./excel/testpicture.xlsx')
df = pd.DataFrame(student_data)
# 对数据进行排序
df.sort_values(by=['2016','2017'],inplace=True,ascending=False)
  1. 绘制图形,并对x轴的说明进行调整
# 绘制条形图
df.plot.bar(x = 'Field',y = ['2016','2017'] , color = ['red', 'blue'])
# plt.xticks(rotation = 45,ha= 'right')
# 获取x轴,对x轴的说明进行调整,rotation表示倾斜的度数,ha表示水平旋转
ax = plt.gca()
ax.set_xticklabels(df['Field'] ,rotation = 45, ha = 'right')
  1. 设置xy轴以及标题的说明
# 设置xy轴的说明
plt.xlabel('field')
plt.ylabel('data of number')

# 加标题
plt.title("Student of Number" ,fontsize =20,color = 'green')
  1. 使图片完整显示(两种方法)
# 对于标签名字太长显示不全,可以用tight_layout()将标签在图中完全显示出来
# plt.tight_layout()

# 获取图形,调整图形与边缘的距离
picture= plt.gcf()
picture.subplots_adjust(left =0.5 ,bottom = 0.1)
  1. 保存及展示
plt.savefig('./excel.png')
plt.show()

结果:

利用pandas和matplotlib结合绘制出的图形可以设置更多的参数,可以让图形变的更加美观也更直观。

✈补充:pandas的其他绘图方法

🍁(二)利用pandas实现多表联合

在一个ecxel中可以有很多张表,通常这些表合并在一起又会生成一个新的数据。
实例:将这两张表的学生成绩打印出来

🔥1.在excel中实现

使用VLOOKUOP函数进行联合

📌注:在VLOOKUP中若是匹配不到数值,则会进行近似匹配,如上结果所示,21号学生成绩不存在,则近似匹配上一个的值。

若不想近似匹配则将默认值改为True。
=VLOOKUP(A2,Scores!A1:B21,2,FALSE)

若要显示为0,则需要用到IFNA函数。

这样就完成了将两表联合查询到了学生的成绩。那么在pandas中该如何实现呢?

🔥2.在pandas中实现

在pandas中打开excel时加入参数sheet_name即可选定指定的表

student = pd.read_excel('./excel/testone.xlsx',sheet_name='Students')
score = pd.read_excel('./excel/testone.xlsx',sheet_name='Scores')

将两张表拼接起来使用,这样的操作对应到SQL中是join,而在pandas中则是用merge来实现。
注:在使用merge时默认为inner,即没有匹配到的值则丢弃。 这时需使用参数how来保留原表数据。fillna用来将Nan转换为0。
on 用来匹配数值通常为两表列名相同,若两表的列名不同则分别用left_on 和right_on指出,

import pandas as pd

student = pd.read_excel('./excel/testone.xlsx',sheet_name='Students')
score = pd.read_excel('./excel/testone.xlsx',sheet_name='Scores')

df_student = pd.DataFrame(student)
df_score = pd.DataFrame(score)

# how 表留左边表格数据,on按照id匹配,fillna将没有匹配到的值赋予0
# result = student.merge(score,how='left',on='ID').fillna(0)
result = student.merge(score,how='left',left_on='ID',right_on='ID').fillna(0)
# 修改Score的数据类型原本为float
result.Score = result.Score.astype(int)

print(result)

结果:

🍁(三)数据校验

在excel表格中,通常会有一些数据不符合我们的规范要求,从而导致我们的到的数据不准确,因此我们需要将他们筛选出来。那么我们该怎么做呢?
实例:将成绩不符合0-100的数据筛选出来

🔥1.在excel表格中实现

在数据栏找到有效性并设置数值范围,随后将不符合的值圈出即可。

结果:

需要找出不符合的数据,在pandas中又如何操作呢?

🔥2.在pandas中实现

在实现上述结果前定义函数来作为条件判断

import pandas as pd

def Score_false(x):
    if not 100>= x.Score >=0 :
        print("ID为,姓名为:的学生成绩异常,成绩为:".format(x.ID,x.Name,x.Score))

score = pd.read_excel('./excel/testtwo.xlsx')

df = pd.DataFrame(score)
# axis=1则从行查询 axis=0则从列查询
df.apply(Score_false,axis=1)

结果:

🍁(四)拆分列

在excel中存在复合列,我们要将这些列拆分才方便数据的查询,那么该如何去操作呢?
实例:将该表中的Full Name进行拆分。

🔥1.在excel中实现

在数据栏中找到分列选项,在此分隔符为空格,按照实际情况来定。
结果:

那么在pandas中又如何实现呢?

🔥2.在pandas中实现

在pandas中需要用到字符串进行拆分

import pandas as pd

test = pd.read_excel('./excel/testthree.xlsx')
df = pd.DataFrame(test)
name = df['Full Name'].str.split(expand = True)
df['firstname'] = name[0]
df['lastname'] = name[1]
print(df)

结果:

🍻结语

今天的内容就到这里啦,希望看到此文的小伙伴能有所收获,另外pandas在excel中还有很多操作需要探索,关注我,咱们下期再见!!

以上是关于Python | 带你玩转Python的各种文件操作的主要内容,如果未能解决你的问题,请参考以下文章

python数据分析基础006 -利用pandas带你玩转excel表格(上篇)

Python轻应用:手把手带你玩转mqtt

大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频

Python机器学习从入门到高级:带你玩转特征转换(含详细代码)

带你玩转Python爬虫(胆小者勿进)千万别做坏事·······

python数据分析基础008 -利用pandas带你玩转excel表格(中下篇)