莫辞更坐弹一曲,为君翻作《琵琶行》

1 文件I\O和文件分类

1.1 文件I\O

I/O:程序数据的输入输出
I:Input,输入,将文件中的数据输入到程序中
O:Ouput,输出,将程序中的数据输出到文件中

1.2 文件分类

按照文件类型分类

  • 视频文件、音频文件、图片文件、word文档等…

按文件的底层数据组成分类

  • 底层字节组成的文:二进制文件
  • 底层字符组成的文件:文本文件

判断方式:

  • 记事本打开是否是乱码

2 文件读写

打开文件使用python内建函数:

open(file, mode, encoding)
# 打开文件的函数:按照指定的mode方式和encoding编码,打开系统上的file文件"""
1) 参数file:需要操作的文件名称[可以包含全路径/或者只是文件名称(当前文件夹)]mode:文件操作方式r:read 打开并且读取文件内容【默认参数】,文件不存在会报错w: write 打开并且向文件中写入内容(覆盖写入) [如果文件不存在,创建一个新文件,但不会创建目录] [每次打开文件写入内容,都会覆盖原来的内容],要注意w方式打开文件就会将原内容删除a: append 打开并且向文件中追加内容(追加写入),指针在文件结尾t: text 打开一个文本文件进行操作【默认参数】rb/wb/ab: binray 操作二进制文件r+/rb+/w+/wb+/a+/ab+:读写模式
2)encoding:文件编码按照指定的编码方式,进行文件读写就不会出现文件乱码!编码一般指代的都是字符的编码,所以在操作文本文件的读写时,一定要注意指定编码方式。(ASCII、GB2312、UTF-8等)
"""

2.1 文本文件读写

  • 读取文件

# 打开文件(这里是打开当前文件夹下的test.txt文件,如果在其他文件夹则要输入路径)
file = open("test.txt", mode="r", encoding="utf-8")  # 得到一个迭代对象,可以循环读取,每次读取一行# 读取文件
# read():读取文件中的所有内容
# read(size):读取文件中的指定字节的内容(文本文件读取一般不需要),可指定大小或字符串个数
# readline():一次读取一行内容,每一行末尾会读到\n,可指定字符长度,下一次会续上次继续往下读取
# readlines():读取所有文本内容,按照行存储在一个列表中,,需要遍历出来
content = file.read()# 打印内容
print(content)  # 莫辞更坐弹一曲,为君翻作《琵琶行》。# 关闭文件(一定要记得)
file.close()
  • 文件写入
# 打开文件(这里是打开当前文件夹下的test.txt文件,如果在其他文件夹则要输入路径)
# w: 打开并且向文件中写入内容[如果文件不存在,创建一个新文件] [每次打开文件写入内容,都会覆盖原来的内容]
# a: 打开并且向文件中追加内容
file = open("test.txt", mode="a", encoding="utf-8")# 写入文件
# write():将一个指定字符串写入到文件中
# writeline():多条数据一次性写入(如传入一个列表,可一次性将列表中的数据写入,就不需要使用循环遍历再使用write)
s = "感我此言良久立,却坐促弦弦转急。"
content = file.write(s)# 关闭文件(一定要记得)
file.close()

2.2 二进制文件读写

# 打开当前文件夹下的图片文件test.jpg
file1 = open("test.jpg", mode="rb")# 设置单次接收文件大小
single_size = 1024 * 25  # 每次接收25K,默认接收单位是b# 创建接收文件
file2 = open("test_copy.jpg", mode="wb")# 接收写入数据
while True:# 读取设置好的单次写入的数据大小# 不设则默认一次性读取所有内容,但会导致文件的内容直接占据内存空间,导致运行缓慢或内存溢出程序崩溃receive_data = file1.read(single_size)# 判断是否读取完毕,即文件结束处为b''if receive_data == b'':break# 写入数据file2.write(receive_data)# 关闭文件
# 复制完成,文件夹会生成test_copy.jpg文件
file2.close()
file1.close()

2.3 with语句

是一种快捷操作语法,有固定的语法格式,用于简化打开和关闭文件的操作

with open(..) as 别名:操作文件内容,with 语句中包含的代码执行完成自动关闭文件[自动调用 close()]

2.1中的读取文件的代码用with语句可写成:

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

3 csv模块

csv文件是一种固定格式的文本文件,可以使用excel按照表格的方式进行展示
csv模块可以将程序中的数据(不是字符或者字节)存储或者读取到指定的 csv文件中

import csv
# (1) 写入数据# 程序中的数据
users = [["s1", "莫辞更坐弹一曲", "为君翻作琵琶行"],["s2", "感我此言良久立", "却坐促弦弦转急"],
]# 打开文件,并获取到 csv 模块的 writer 对象
with open("test_csv.csv", mode="w", newline="") as file:  # newline=""的作业的每读入一行后不隔行,如果不写会有每一行之间会有空行(默认结尾\n换行)# 获取 writer 对象writer = csv.writer(file)# 写列标题writer.writerow(["id", "num1", "num2"])  # writerow 写入单行内容# 写入系统用户,保存用户数据writer.writerows(users)  # writerow 写入多行内容# (2) 读取数据
with open("test_csv.csv", "r") as file:# 获取 reader 对象, cvs 模块中用户读取数据的模块:readerreader = csv.reader(file)  # 得到的是可迭代对象# 数据打印for row in reader:print(row)

运行结果:

生成的.csv文件:

4 shelve模块

shelve模块python提供的一种快捷操作程序中数据的模块,按照字典的方式完成数据的存取

import shelve
# (1) shelve 存储数据到文件中[按照字典方式赋值即可]# 程序中的数据
a = "莫辞更坐弹一曲"
b = "为君翻作琵琶行"
c = 1# 将程序中的数据存储到文件中
with shelve.open("test_shelve.txt") as file:# 将文件当成字典:存储数据file["s1"] = afile["s2"] = bfile["s3"] = c   # file["s3"] = c = 1'''
生成三个文件
bak 文件:备份文件
dir 文件:描述变量数据位置的文件
dat 文件:数据文件,保存了真实数据
'''# (2) 按照字典的方式读取数据
# 默认会加载 .dat 和 .dir 文件
with shelve.open("test_shelve.txt") as file:s1 = file["s1"]s2 = file["s2"]s3 = file["s3"]
print(s1, s2, s3)  # 莫辞更坐弹一曲 为君翻作琵琶行 1

5 os模块

os模块是和操作系统交互的内建模块

  • 文件夹的操作:
import os# makedirs()
# 创建多级文件夹 当文件已存在时,无法创建
os.makedirs("test1/test2/test3")
# 创建一个文件夹 当文件已存在时,无法创建
os.mkdir("test4")
# 删除多个文件夹 删除文件夹会有非空判断(若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 如果上一层目录不为空则停止删除文件)
os.removedirs("test1/test2/test3")
# 删除某个空文件夹
os.rmdir("test4")
# 列出当前目录中的所有文件(夹) 不写路径则为当前文件夹
print(os.listdir()
  • 文件的操作:
import os# 删除文件
os.remove("test_copy.jpg")# 重命名文件(注意文件路径一致)
os.rename("test.jpg", "pic.jpg")
  • 路径的操作:
    路径操作使用os.path
import os# 判断 path 路径的文件(夹)是否存在
print(os.path.exists("test.txt"))  # True
# 判断 Path 路径的文件是否是文件夹(目录)
print(os.path.isdir("test.txt"))  # False
# 判断 path 路径的文件是否是文件
print(os.path.isfile("test.txt"))  # True
# 获取 path 路径文件的大小
print(os.path.getsize("pic.jpg"))  # 182266 b
  • 其他操作:

os.chdir() 改变工作路径
os.getcwd() 获取当前文件夹
os.environ() 获取系统环境变量
os.getenv() 获取指定的环境变量

os.path.abspath() 获取绝对路径
os.path.basename() 获取路径中最后部分(如test.txt)
os.path.isabs() 判断是否绝对路径
os.path.dirname() 获取文件所在目录

莫辞更坐弹一曲,为君翻作《琵琶行》——python文件I\O相关推荐

  1. python实战!智能翻页批量下载文件

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  2. python网上批量下载表格_python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  3. 关于python文件读写小结

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  4. 第九课.Python文件操作

    Python文件读写 最基本的,通过open返回文件句柄(文件对象),将文件读入内存: #f是一个文件对象 f=open('./sample.txt') data=f.read()#read读取所有内 ...

  5. python读取文件读不出来-python文件读取失败怎么处理

    在读取文件时候比如读取 xxx.csv 时候 可能报编码错误 类似于 'xxx' codec can't decode byte 0xac in position 211: illegal multi ...

  6. python文件编译_将c程序编译为python扩展,生成.whl文件

    借鉴的文章会在文章末尾会逐一给出 1. 对c文件进行编译 先确保要实现的代码运行成功,然后将main()函数删除,例如test.c文件 void test_func(char *str){ FILE ...

  7. python文件读写小结

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  8. python文件操作和绘制曲线

    目录 一 当前文件路径 二 python路径拼接os.path.join()函数的用法 三 print格式化输出 四 将 print 输出到文件 五 log模块 1 配置文件 2 全局log 3 使用 ...

  9. Python文件操作-文本文件、二进制文件、csv文件的读取写入、OS、shutil、CSV模块、常用字符编码

    Python文件操作 文本文件和二进制文件 文件操作相关模块 open()创建文件对象 文件对象的常用属性和方法 pickle 序列化 文本文件读取和写入 文本文件写入步骤 write()/write ...

最新文章

  1. 新技能 MyBatis 千万数据表,快速分页!
  2. 基于CASIA-GaitDatasetB步态图像轮廓数据库的步态周期检测与步态角度特征MATLAB源码
  3. FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)
  4. ORACLE 数据迁移
  5. 360浏览器 ajax取缓存,Angularjs在360兼容模式下取数据缓存问题的解决办法
  6. 5d4的白平衡模式_佳能5D4有什么白平衡模式?ISO是多少?
  7. 01Struts 2
  8. spring消息队列_AmazonSQS和Spring用于消息传递队列
  9. springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)
  10. github上成员贡献量_真祖传代码!你的GitHub代码已打包运往北极,传给1000年后人类...
  11. C++面试题-青蛙跳台阶的2种解法
  12. 震惊!几道Python 理论面试题,Python面试题No18
  13. JS图片自动或者手动滚动效果(支持left或者up)
  14. 面向对象chapter2
  15. Atitit js es5 es6新特性 attilax总结
  16. win10跳过计算机密码,win10开机密码忘了怎么办
  17. python使用给定字符密码_使用python生成一个指定长度的字符串(随机密码),要求包括数字、字母、特殊符号(string库解析)...
  18. IE主页被篡改了怎么办
  19. 淘宝新店运营怎么选品?API接口助您高效选品
  20. Wireshark如何导出h264码流和h265码流

热门文章

  1. 作为一名网络工程师,分享下IT从业经验!
  2. 2020小红书校招题目知识整理——哈夫曼编码
  3. 人机交互目前的瓶颈和马斯克的脑机接口
  4. linux删除文件最后一行换行符,linux - 使用sed删除最后一个换行符 - 堆栈内存溢出...
  5. 字节大牛教你手撕Android学习,灵魂拷问
  6. SDR屏幕放HDR(HLG)视频画面泛灰
  7. 卡西欧将发布紧凑型G-SHOCK新品,为锻炼和日常使用提供便利
  8. php 验证码不正确,dedecms织梦网站后台登录一直提示验证码不正确
  9. 三句话归纳数据库三范式
  10. Fragment底部导航栏的实现