13.Python的文件操作

一、文件概述及编码

1.1文件的定义

计算机文件是一个存储在存储器上的数据序列,可以包含任何数据内容。

文件包括两种类型:文本文件和二进制文件。

文本文件:存储的是普通“字符”文本,默认为Unicode字符集,可以使用记事本程序打开

二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开,举例:mp3音频文件,jpg图片,doc文档等

二进制文件和文本文件本质上没有区别,只是没有统一的编码,需要根据特定的程序进行解析和运行。

无论是文本文件还是二进制文件都可以用"文本文件方式"和"二进制文件方式"打开,打开后的操作不同。

1.2字符编码

ascii码:

只有英文字母和常见字符,一个字符占一个字节大小

gb2312:

简体的中文字符集,两个字节表示一个汉字

gbk:

在gb2312的基础上新增了繁体字及罕用字,两个字节表示一个汉字

unicode:

将世界上所有的符号纳入其中,两个字节表示一个汉字

utf-8:

提高unicode的编码小了,一个字节表示英文字母,三个字节表示一个汉字

1.3Python的编码格式

Python的解释器使用的是Unicode(内存)

.py文件在磁盘上使用UTF-8存储(外存)

二、Python的文件操作

2.1文件的读写原理

文件的读写俗称‘IO操作’ (input、output)

文件读写操作流程、操作原理

2.2 open打开文件

open(file, mode='r', encoding=None)

  1. file是包含文件名的字符串,可以为绝对路径,也可以是相对路径

相对路径:参照标准为当前脚本 .表示当前目录 ..表示上级目录

当前目录下a.txt文件: ./a.txt 或 a.txt ./可省略

上级目录下a.txt文件 : ../a.txt ../../../x.txt

绝对路径:参照标准是系统的根目录

linux系统:/temp/xxx

windows系统:c:\xxx\xxx\xxx(注意在文件路径前增加‘r’使路径不转移 r'c:\xxx\xxx\xxx')

一般情况下项目本身的资源文件和脚本路径相对固定,为了不影响项目的移植性,必须使用相对路径。

如果需要读取操作系统中固定位置的系统文件一般使用绝对路径。

  1. mode 一个可选字符串,用于指定打开文件的模式。默认值r表示文本读。

    打开模式描述
    r以只读模式打开文件,文件的指针将会放在文件的开头
    w以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容(清空文件原内容),文件指针在文件的开头
    a以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾
    b以二进制方式打开文件,不能单独使用,需要与其它模式一起使用,rb或者wb
    +以读写方式打开文件,不能单独使用,需要与其它模式一起使用,如a+(读追加写)、r+(读写)
    x以写入模式打开文件,当文件不存在则创建,文件存在则报错
  2. encoding 文本模式下指定文件的字符编码

file=open('a.txt','r')
print(file.readlines())
file.close()

2.3 with上下文管理器

使用open函数打开文件后,需手动关闭文件释放内存, 而with语句可以自动管理上下文资源,不论什么原因跳出with都能确保文件正确的关闭,以此来达到释放资源的目的

 

只写:w

with open('a.txt', 'w', encoding='utf-8') as fb:
    fb.write('test\n')
    fb.write('hello world;\n')

追加:a

with open('a.txt', 'a', encoding='utf-8') as fb:
    fb.write('1\n233\n')

排他写:x

#在当前目录中创建文件b.txt,存在则不创建
try:
    with open('b.txt', 'x', encoding='utf-8') as fb:
        fb.write('')
except Exception as e:
    print(e)

二进制:r

src_file=open('log.png','rb')
target_file=open('copylog.png','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()

2.4文件的常用方法

方法名说明
read([size])从文件中读取size个字节或字符的内容返回,若省略[size],则读取到文件末尾,即一次读取文件所有内容
readline()从文本文件中读取一行内容
readlines()把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str)将字符串str内容写入文件
writelines(s_list)将字符串列表s_list写入文本文件,不添加换行符
seek(offset[,whence])把文件指针移动到新的位置,offset表示相当于whence的位置:offset:为正往结束方向移动,为负往开始方向移动whence不同的值代表不同含义:0:从文件头开始计算(默认值)1:从当前位置开始计算2:从文件尾开始计算
tell()返回文件指针的当前位置
flush()把缓冲区的内容写入文件,但不关闭文件
close()把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

三、目录操作

os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样

3.1 os模块常用函数(目录操作)

函数说明
getcwd()返回当前的工作目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path[,mode])创建目录
makedirs(path1/path2....[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path2...)删除多级目录
chdir(path)将path设置尾当前工作目录
import os
# os.system('notepad.exe')
​
ha=os.getcwd()
print(ha)

3.2 os.path模块的常用方法(目录操作)

函数说明
abspath()用于获取文件或目录的绝对路径
exists(path)用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path,name)将目录与目录或者文件名拼接起来
splitext()分离文件名和扩展名
basename(path)从一个目录中提前文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)用于判断是否为路径
import os.path
print(os.path.abspath('list.py'))

四、补充:python处理csv文件

4.1读取csv文件

文件内容(a.csv):

name,age,height

zhangsan,14,150

lisi,20,178

wangwu,40,175

# 读取csv文件并解析为嵌套列表
data = []
with open('a.csv', 'r', encoding='gbk') as f:
    for line in f:
        # 去掉换行符
        line = line.strip()
        data.append(line.split(','))

4.2将数据写为csv文件

data:

data=[['name', 'age', 'height'], ['zhangsan', '16', '170'], ['lisi', '17', '185'], ['wangwu', '20', '180']]

with open('test.csv', 'w', encoding='utf-8') as f:
    for item in data:
        f.write(','.join(item) + '\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python提供了丰富的文件操作函数,用于读取、写入和管理文件。以下是一些常用的Python文件操作函数: 1. 打开文件:使用`open()`函数可以打开一个文件,并返回一个文件对象。可以指定文件名、打开模式和编码方式等参数。例如: ```python file = open("example.txt", "r", encoding="utf-8") ``` 2. 读取文件内容:使用`read()`函数可以读取整个文件的内容,或者使用`readline()`函数逐行读取文件内容。例如: ```python content = file.read() # 读取整个文件内容 line = file.readline() # 读取一行内容 ``` 3. 写入文件内容:使用`write()`函数可以向文件中写入内容。需要注意的是,打开文件时需要指定写入模式(如`"w"`或`"a"`)。例如: ```python file.write("Hello, world!") # 写入内容到文件 ``` 4. 关闭文件:使用`close()`函数可以关闭文件,释放资源。例如: ```python file.close() # 关闭文件 ``` 5. 文件位置操作:使用`seek()`函数可以移动文件指针到指定位置,使用`tell()`函数可以获取当前文件指针的位置。例如: ```python file.seek(0) # 移动文件指针到文件开头 position = file.tell() # 获取当前文件指针位置 ``` 6. 文件操作异常处理:在文件操作过程中,可能会出现各种异常情况,可以使用`try-except`语句来捕获并处理异常。例如: ```python try: file = open("example.txt", "r") # 其他文件操作代码 except IOError: print("文件操作出错") finally: file.close() # 确保文件被关闭 ``` 以上是一些常用的Python文件操作函数,可以根据具体需求选择合适的函数进行文件处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值