Python文件操作基础教程

简介: Python文件操作基础教程

1.文件操作概述


1.什么是文件


内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了**“文件”**的概念。


一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别


2.文件操作的作用

文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。



2.文件的基本操作


1.文件的操作步骤


想想我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走):

① 打开文件

② 读写文件

③ 关闭文件

注意:可以只打开和关闭文件,不进行任何读写



2.open()打开函数

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下

open(name, mode)



name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

示例代码:

f = open('python.txt', 'r')


注意:此时的fopen函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问,后续面向对象课程会给大家进行详细的介绍。



3.mode访问模式详解

image.png



4.写操作快速入门


1.写操作快速入门

# 1. 打开文件
f = open('python.txt', 'w')
# 2.文件写入
f.write('hello world')
# 3. 关闭文件
f.close()


注意:

w模式和a模式:如果文件不存在则创建该文件;如果文件存在,w模式先清空再写入,a模式直接末尾追加。

r模式:如果文件不存在则报错。



2.读操作相关方法


1.read()方法:

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

文件对象.read(num)


2.readlines()方法:

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

f = open('python.txt')
content = f.readlines()
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)
# 关闭文件
f.close()


3.readline()方法

readline()方法:一次读取一行内容,每运行一次readline()函数,其就会将文件的指针向下移动一行

f = open('python.txt')
content = f.readline()
print(f'第一行:{content}')
content = f.readline()
print(f'第二行:{content}')
# 关闭文件
f.close()


4.seek()方法

seek()方法用来移动文件指针

文件对象.seek(offset,whence=0)


offset:开始的偏移量,也就是代表需要移动偏移的字节数

whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。


如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。

>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5)      # 从0开始向右移动5个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2)  # 从右向左移动3个字节
13
>>> f.read(1)
b'd'


r:Python 将会按照编码格式进行解析,read() 操作返回的是str

rb:也即 binary mode,read()操作返回的是bytes

重置指针到文件的开头:

f.seek(0)


f.seek(0, 0)
• 1


5.close()方法

基本语法:


文件对象.close()



3.文件备份案例


文件备份代码实现


备份文件写入数据

打开源文件 和 备份文件

将源文件数据写入备份文件

关闭文件

old_name = input('请输入您要备份的文件名:')
index = old_name.rfind('.')
if index > 0:
    postfix = old_name[index:]
    new_name = old_name[:index] + '[备份]' + postfix
    old_f = open(old_name, 'rb')
    new_f = open(new_name, 'wb')
    while True:
        con = old_f.read(1024)
        if len(con) == 0:
            break
        new_f.write(con)
    old_f.close()
    new_f.close()



4.文件和文件夹的操作


1.os模块

在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:

① 导入os模块

import os


② 还用os模块的相关功能

os.函数()


2.文件操作

编号 函数 功能
1 os.rename(目标文件名称,新文件名称) 对文件进行重命名操作
2 os.remove(要删除文件名称) 对文件进行删除操作


案例:把Python项目目录下的python.txt文件,更名为linux.txt,查看效果后,对文件进行删除操作。

# 1、导入os模块、time模块
import os
import time
# 2、调用rename方法实现重命名(需要手工刷新左侧导航栏)
os.rename('python.txt', 'readme.txt')
# 3、调用time模块中的sleep方法休眠100s
time.sleep(100)
# 4、删除readme.txt文件
os.remove('readme.txt')


3.文件夹操作

编号 函数 功能
1 os.mkdir(新文件夹名称) 创建一个指定名称的文件夹
2 os.getcwd() current work directory,获取当前目录名称
3 os.chdir(切换后目录名称) change directory,切换目录
4 os.listdir(目标目录) 获取指定目录下的文件信息,返回列表
5 os.rmdir(目标目录) 用于删除一个指定名称的"空"文件夹


案例:准备一个static文件夹以及file1.txt、file2.txt、file3.txt三个文件

① 在程序中,将当前目录切换到static文件夹

② 创建一个新images文件夹以及test文件夹

③ 获取目录下的所有文件

④ 移除test文件夹


代码实现:

# 1、导入os模块
import os
# 2、将当前工作目录切换到static文件夹
os.chdir('static')
# print(os.getcwd())
# 3、创建images以及test文件夹
os.mkdir('images')
os.mkdir('test')
# 4、获取目录下的所有文件
for i in os.listdir():
    print(i)
# 5、移除test文件夹
os.rmdir('test')



5.文件操作应用案例


需求分析:批量修改文件名,既可添加指定字符串,又能删除指定字符串。


步骤:


① 设置添加删除字符串的的标识

② 获取指定目录的所有文件

③ 将原有文件名添加/删除指定字符串,构造新名字

④ os.rename()重命名

import os
# 设置标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1
# 获取指定目录
dir_name = './static'
# 获取指定目录的文件列表
file_list = os.listdir(dir_name)
# print(file_list)
# 遍历文件列表内的文件
for name in file_list:
    # 添加指定字符
    if flag == 1:
        new_name = 'Python-' + name
    # 删除指定字符
    elif flag == 2:
        num = len('Python-')
        new_name = name[num:]
    # 打印新文件名,测试程序正确性
    print(new_name)
    # 重命名
    os.rename(dir_name+name, dir_name+new_name)


相关文章
|
10天前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
80 1
linux centos上安装python3.11.x详细完整教程
|
2月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
5天前
|
存储 Python
Python文件操作
Python文件操作
|
6天前
|
存储 安全 Python
30天拿下Python之文件操作
30天拿下Python之文件操作
15 1
|
9天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
11天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
34 3
|
12天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
43 3
|
15天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
13天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
49 1
|
18天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
下一篇
无影云桌面