Python快速编程入门——第8章 文件操作

第8章 文件操作 一、文件的打开和关闭 二、文件的读写 三、文件的重命名和删除 四、文件夹的相关操作 五、文件…

第8章 文件操作

一、文件的打开和关闭
二、文件的读写
三、文件的重命名和删除
四、文件夹的相关操作
五、文件操作应用——批量修改文件名

一、文件的打开和关闭

文件打开一般分为以下几步:
(1)打开文件,或者新建立一个文件。
(2)读/写数据。
(3)关闭文件。

文件的打开
在Python中,open方法用来打开文件,语法格式如下:
open(文件名[,访问模式])
上述格式中,“文件名”必须要填写,“访问模式”是可选的。
文件模式
如果使用open方法打开文件时,只传入了文件名参数,那么我们只能读取文件。此时,要打开的文件中写数据,就必须指明文件的访问模式。Python中文件的访问模式有很多种。
文件的关闭
凡是打开的文件,切记要使用close方法关闭。即使文件会在程序退出后自动关闭,但是考虑到数据的安全性,在每次使用完文件后,都要使用close方法关闭文件,否则一旦程序崩溃,很可能导致文件种的数据没有保存。close方法很简单。

#新建一个文件,文件名:itheima.txt
file = open('itheima.txt','w')
#关闭这个文件
file.close()

二、文件的读写

文件最重要的能力就是接收数据或者提供数据。文件的读写,无非是将数据写入文件或者从文件种读取数据。

写文件
向文件写入数据,需要使用write方法来完成。在操作某个文件时,每调用一次write方法,写入的数据就会追加到文件末尾。

#新建一个文件,文件名:itheima.txt
file = open('itheima.txt','w')
file.write('hello itheima,i am here!')
file.write('\n')
file.write('hello itheima,i am here!')
file.write('\n')
file.write('hello itheima,i am here!')
file.write('\n')
#关闭这个文件
file.close()

在这里插入图片描述

2.读文件
从文件读取数据时,可以通过多种方式来获取,具体可以分为三种:
(1)使用read方法读取文件
语法格式: read(size)
(2)使用readlines方法读取文件
若文件的内容很少,则可以用readlines方法把整个文件中的内容进行一次性读取。

file = open('itheima.txt','r')
content = file.readlines()
i = 1
for temp in content:
print("%d:%s"%(i,temp))
i += 1
file.close()
#结果
#1:hello itheima,i am here!

#2:hello itheima,i am here!

#3:hello itheima,i am here!

(3)使用readline方法一行一行读数据

file = open('itheima.txt','r')
content = file.readline()
print("1:%s"%content)
content = file.readline()
print("2:%s"%content)
file.close()
#结果
#1:hello itheima,i am here!
#
#2:hello itheima,i am here!

文件读写应用——制作文件的备份
在这里插入图片描述

#如果文件存在
if old_file:
#提取文件的后缀
location_flag = old_file_name.rfind('.')
if location_flag > 0:
file_flag = old_file_name[location_flag:]
#组织文件的新名字
new_file_name = old_file_name[:location_flag]+'[复件]'+file_flag
#创建新文件
new_file = open(new_file_name,'w')
for line_content in old_file.readlines() :
new_file.write(line_content)

#关闭文件
old_file.close()
new_file.close()

文件的定位读写
(1)使用tell方法来获取文件当前的读写位置
在读写文件的过程中,如果想知道当前读取了文件的那个位置,则可以使用tell()方法来获取,该方法会返回文件指针当前的位置。

#打开一个已经存在的文件
file = open("itheima.txt","r")
words = file.read(4)
print("读取的数据时:",words)
#查找当前位置
position = file.tell()
print("当前的位置:",position)
words = file.read(8)
print("读取的数据时:",words)
#查找当前位置
position = file.tell()
print("当前的位置:",position)
words = file.read(3)
print("读取的数据时:",words)
#查找当前位置
position = file.tell()
print("当前的位置:",position)
file.close()

(2)使用seek方法定位到文件的指定读写位置
如果要从指定的位置开始读取或者写入文件的数据,则可以使用seek方法实现。seek方法的语法格式如下:
seek(offset[,whence])
seek方法的参数介绍如下所示:
1、offset:表示偏移量,也就是需要移动的字节数。
2、whence:表示方向,该参数的值有三个
1)SEEK_SET或者0:whence参数的默认值,表示从文件的起始位置开始偏移。
2)SEEK_CUR或者1:表示从文件当前的位置开始偏移。
3)SEEK_END或者2:从文件末尾开始偏移。

file = open('itheima.txt','r')
words = file.read(15)
print("读取的数据",words)
#查找当前的位置
position = file.tell()
print("当前文件的位置是:",position)
#重新设置位置
position = file.tell(4)
print("当前文件的位置是:",position)
file.close()
#结果:
#读取的数据 hello itheima,i
#当前文件的位置是: 15
#当前文件的位置是: 4

三、文件的重命名和删除

文件的重命名
os模块的rename方法可以完成对文件的重命名操作。
os.rename(src,dst)
src指的是需要修改的文件名,dst指的是修改后的新文件名。

import os
os.rename("毕业论文.txt",'毕业论文-最终版.txt')

文件的删除
os模块的remove方法可以完成对文件的删除操作
os.remove(path)

import os
os.remove('毕业论文-最终版.txt')

四、文件夹的相关操作

在实际开发中,有时需要用程序的方式对文件夹进行一定的操作,如创建、删除等。就像对文件操作需要OS模块一样,如果要操作文件夹,同样需要OS模块。大部分命令应该类似Linux系统

创建文件夹
OS模块的mkdir方法用来创建文件夹

import os
os.mkdir('张三')

获取当前目录

import os
print(os.getcwd())
#结果
#D:\代码\python

改变默认目录

import os
os.chdir("../")

获取目录列表

import os
os.listdir("./")

删除文件夹

import os
os.rmdir("张三")

五、文件操作应用——批量修改文件名

#批量在文件名前加前缀
import os
flag = 1 #1表示添加标志,2表示删除标志
folder_name = './张三/'
#获取指定路径的所有文件名字
dir_list = os.listdir(folder_name)
for name in dir_list :
print(name)
if flag == 1:
new_name = '[前缀名]'+name
elif flag ==2:
number = len('[前缀名]')
new_name = name[number:]
print(new_name)
os.rename(folder_name+name,folder_name+new_name)
#结果
# 学生1.txt
#[前缀名]学生1.txt
#学生10.txt
#[前缀名]学生10.txt
#学生2.txt
#[前缀名]学生2.txt
#学生3.txt
#[前缀名]学生3.txt
#学生4.txt
#[前缀名]学生4.txt
#学生5.txt
#[前缀名]学生5.txt
#学生6.txt
#[前缀名]学生6.txt
#学生7.txt
#[前缀名]学生7.txt
#学生8.txt
#[前缀名]学生8.txt
#学生9.txt
#[前缀名]学生9.txt

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「菠萝大师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xhb29/article/details/86551428

本文来自网络,不代表编程技术之VIP部落立场,转载请注明出处:http://www.vvipblog.com/?p=325

作者: baolinguo

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

13001198364

在线咨询: QQ交谈

邮箱: 752694007@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部