Python——文件操作

目录

一、文件的类型(编码不同分类)

二、文件的操作

5、常见错误:

三、知识点

四、Excel文件的读写

(一)、读写模块的安装

(二)、Execl文件的读取操作

3、常用的方法:


一、文件的类型(编码不同分类)

1、文本文件:基于字符编码,存储的是普遍字符串,不包括字体、字号、样式、颜色等信息,可通过文本编辑器显示和编辑。
   如:.txt/.py/.html/.csv/.xls/.slsx
2、二进制文件:基于值编码的,以字节形式存储,其编码长度根据值的大小长度可变。
   如:.jpg/.avi等图片、音频或视频文件

二、文件的操作

1、使用open( )函数打开(或建立)文件,返回一个file对象;
2、使用file对象的读\写方法对文件进行读\写的操作;
3、使用file对象的close( )方法关闭文件

示例如下:

示例1:读出文件夹Stu_pack里的文本文件(英文和中文)

原文件样式:

代码:

#创建打开文件对象file 
file=open(r'C:\Users\William\Desktop\Stu_pack\Dream It Possible.txt',encoding='utf_8')    
      
#file.read( )      #一次性读取文件

f_r=file.readlines()       #以行为单元读取文件          定义列表f_r存放按行读取的文件 

for line in f_r:      #遍历文件列表,并打印出来
    print(line)

file.close()    #关闭文件,不然内容丢失

效果展示:呈现效果太长,只放一部分

示例2:读取二进制文件

原文件样式:

代码:

from PIL import Image      #导入pillow第三方库中的Image图片库模块
im=Image.open(r'C:\Users\William\Desktop\Stu_pack\Five_Star.png')      #/左斜杠真正代表路径,/反斜杠为转义字符
              #创建打开文件对象
#im.save('Five_Star.png')          #相对路径保存
im.save(r'C:\Users\William\Desktop\python\Jumpter\Five_Star.png')         #绝对路径
im.show()       #在当前窗口显示文件

效果如下:在一个新的窗口打开文件,内容相同,但名字不同,同时通过路径在目标文件夹创建一个新的文件.

示例3:写文本文件:向当前文件夹demo里写入文件test.txt,其内容为10行自己的学号姓名(这里用其他的代替),每行前面有序号

#创建文件'test.txt'打开文件对象file
file = open('test.txt','w+',encoding='utf-8')
#循test.txt'环10次
for i in range(1,11):
    file.write(str(i)+'\t'+'HEYHEYHEY'+'\n')
 #关闭文件,防止内容丢失   
file.close()

#读取test.txt
hile=open('test.txt',encoding='utf-8')
h_r=hile.read()
print(h_r) 

hile.close()

效果如下:

实例4:即开即关操作文件方式:

原文件样式:

代码:

with open(r'C:\Users\William\Desktop\Stu_pack\万疆.txt',encoding='utf-8')as file:      
    print(file.read())

效果如下:

5、常见错误:

①、’/‘左斜杠真正代表路径,’\‘反斜杠为转义字符,要在路径前添加’r‘或者’R‘原始字符串表示

以示例2举例:

下图代码可以正常运行

没有添加原始字符串表示,则报错

三、知识点

1、file:表示文件名或文件路径的字符串。

以D:\test.txt(D盘下的test.txt文件)为例,文件名的路径包含特殊字符“\”。该文件名有三种写法:d:\test.txt、d:\\test.txt、d:/test.txt。
2、mode:文件打开的模式。如读、写、追加等模式,默认为读模式。Python中文件打开的模式主要涉及以下字符参数:

  • r:以只读形式打开文件(默认值,可以省略),文件不存在时报错;
  • w:以只写形式打开文件,文件不存在时,则新建文件,文件存在时会清除原有内容;
  • x:文件不存在时则新建文件并写入,文件存在时则报错;
  • a:如果文件存在,则在文件末尾追加写内容;
  • b:操作二进制文件;
  • t:操作文本文件(默认值,可以省略);
  • +(加号):打开文件用于更新,既可读,也可写,不能单独使用,需和其他字符配合使用。
文件打开的模式组合及其特点
mode取值权限

是否以

二进制

读写

是否删除

原内容

文件不存在时

是否产生异常

追加
r
r+
rb+
w否,创建新文件
w+否,创建新文件
wb+否,创建新文件
a否,创建新文件
a+否,创建新文件
ab+否,创建新文件

PS:"写“指从头开始写,覆盖原来的内容

      ”追加“指从文件末尾开始写,保留原有的内容

      ”r+"指写多少覆盖多少,未覆盖部分内容 保留

      “w+‘指覆盖所有都内容,最终为当前所写内容

3、buffering:设置缓存。
4、encoding:设置文件的编码,一般使用UTF-8 编码

因为默认写模式不支持中文字符,需要将代码改为UTF-8,支持中英文。
5、errors:设置编码错误的处理方式(忽略或报错)。
6、newline:设置新行处理方式。
7、closefd:设置文件关闭时是否关闭文件描述符。


PS:open()函数中file 参数是必需的,其他参数都是可选的。实际应用中通常传递三个参数:file,mode和 encoding。使用open()函数打开文后,就可以对文件对象进行读写操作。表 8-2 列出了文件对象的常用操作方法。

8、文件对象的常见操作方法:

  • read([size]):读取文本数据.将所有内容作为一个字符串返回。若给定正整数 n,将返回n个字节的字符(若不足n个字节字符,则返回所有内容)
  • readline():单独读取文本的一行字符,包括n"字符
  • readlines():把文本文件中的每行文本作为一个元素存人列表中,并返回该列表
  • write( str):写人文本数据,返回值为写人的字节数

四、Excel文件的读写

(一)、读写模块的安装

Excel是二进制文件,需要安装第三方模块来实现对Excel文件的操作。

1、xlrd:读取Execl文件                        xlwt:向Excel文件写入内容

2、安装:pip install xlrd        和   pip install xlwt

安装方法:

或者在命令窗口下载

pip install -i https://pypi.douban.com/simple xlwt

pip install -i https://pypi.douban.com/simple xlrd

或者下载Anaconda集成开发环境中自带这俩个模块

(二)、Execl文件的读取操作

1、第三方库模块的安装(读取:xlrd,写入:xlwt)
2、操作步骤:
    (1)导入模块xlrd
    (2)打开工作簿Book
    (3)指定工作簿中的表单Sheet
    (4)根据行序列号读取内容

3、常用的方法:

  • xlrd.open_workbook(文件名):打开 Excel 文件
  • sheet_by_index(索引):根据索引获取表单(Book类)
  • nrows:表单的行数(Sheet 类)
  • cell_value(行序,列序):获取单元格内容(Sheet 类)

PS: 索引从“0”开始,即“0”表示第一个表单,“1”表示第二个表单

4、示例1:读取Excel文件内容,将结果保存以列表中

原文件样式:

代码:

#读取Stu_pack里面的school.xls文件并以列表保存
#(1)导入模块xlrd
import xlrd

#(2)打开工作簿Book
wb=xlrd.open_workbook(r'C:\Users\William\Desktop\Stu_pack\school.xls','rt')       #创建打开文件(工作簿)的对象wb

#(3)指定工作簿中的表单Sheet
sheet = wb.sheet_by_index(0)       #创建索引表单的对象sheet

#(4)根据行序列号读取内容
schools=[]         #定义一个二维列表school
for row in range(sheet.nrows):
    school = []         #定义一个一维列表school存放一行的单元格内容
    for col in range(sheet.ncols):
        content=sheet.cell_value(row,col)          #读取单元格的内容并保存变量cintent内
        school.append(content)          #将内容追加到一维列表school每一行里面
    schools.append(school)          #将每一行的内容追加到二维列表里面
    
for school in schools:
    print(school)

效果如下:(输出结果过多,仅展示一部分)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值