本文主要是介绍python 的与众不同 -- 进阶篇(七、文件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文件(File)
- 通过Python程序可以对计算机中各种文件的各种操作
- I/O(Input/Output)
- 创建文件:打开文件时mode为写的权限就会创建(如果文件不存在)
- 语法:
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数很多,但只有file是必须的
默认是以纯文本方式打开
读取纯文本以外文件应指定编码,如:encoding-UTF-8’
文件操作时注意捕获异常
# 文件名
file_name = 'test.txt'
# 打开文件(打开是看不见的,只要没有报错就是打开了)
open(file_name)
- open函数有返回值,返回的就是打开的文件
- 关闭文件
file_name = 'test.txt'
file_obj = open(file_name)
# 关闭文件
file_obj.close()
- 在我们开发过程中,有时可能会忘记关闭文件,或者文件关闭后继续使用。python为这种问题提供了一套代码:with … as ,当with结束后会自动关闭文件
with open(file_name) as file_obj :pass
文件的读取
- 通过read()来读取文件中内容
file_obj.read()
- 当读取较大的文件时,容易导致内存泄漏,此时我们应指定read读取长度,-1是读取所有的
file_obj.read(10) # 一共读取10个,从第0个读取 file_obj.read(10) # 一共读取10个,接上一个语句开始也就是从第10个读取
- 读取大文件时,手写read(10)显然不现实,我们可以使用循环完成
with open(file_name) as file_obj:# 所有内容变量file_conten = ''# 每次读取长度chunk = 10# 循环读取while true:# 读取内容content = file_obj.read(chunk)# 判断是否读完if not content:breakfile_conten += content # 打印文件所有内容 print(file_conten)
- 通过readline()来读取文件中内容
一行一行读取 - 通过readlines()来读取文件中内容
一行一行读取,并且返回一个列表 - 通过for循环读取
for循环也是一行一行读取for line in file_obj:print(line)
文件的写入
-
写入文件前必须打开文件
-
写入文件应获取写权限:mode=“w” ,可组合使用==*
* r是只读取
* w是只写入
* a是只追加写入
* r+是可读可写
* w+是可写可读
* a+是追加写入也可读取
* x 新建文件(如果没有,有则报错)
* t 读取文本文件(默认)
* b 读取二进制文件 -
通过write()来写入文件,写入文件必须是字符串
file_obj.write('你好Python')
write()有返回值,返回值是写入长度
-
二进制文件
- 读取二进制文件要指定mode=‘rb’
- 写入二进制文件要指定mode=‘wb’
- 读取二进制文件不用指定编码
-
当前读取的位置
file_obj.tell()
- 修改当前读取的位置
file_obj.seek()
seek()需要两个参数
· 第一个 读取位置
· 第二个 计算方式(可选)
0 从头计算
1 从当前位置计算
2 从最后位置向前计算
os对文件操作
- 导入os模块:import os
- os可以操作文件也可以操作文件夹
- os主要是对文件和文件夹创建、移动、删除、重命名等的操作
- 查看文件加内数据,返回列表
os.listdir()
- 获取当前文件全目录
os.getcwd()
- 切换目录
os.chdir('c:/')
- 创建目录
os.mkdir(path)
- 删除目录
os.rmdir(path)
- 删除文件
os.rmdir('c:/test.txt')
- 修改文件名
os.rename('旧名字','新名字')
- 移动文件
os.rename('c:/旧名字','d:/新名字')
这篇关于python 的与众不同 -- 进阶篇(七、文件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!