目录

  • 一、文件的打开和关闭
    • (一)打开
    • (二)关闭
  • 二、读取数据
    • (一)read()方法
    • (二)readline()方法
    • (三)readlines()方法
  • 三、写入数据
    • (一)write()方法
    • (二)writelines()方法
  • 四、定位读取
    • (一)获取文件读/写位置
    • (二)设置文件读/写位置
  • 五、目录
    • (一)创建目录
    • (二)删除目录
    • (三)获取目录下的文件列表
  • 七、文件路径
    • (一)相对路径和绝对路径
    • (二)os模块中的关于路径的函数

一、文件的打开和关闭

(一)打开

通过内置函数open()来打开一个文件,并返回文件对象,若无法被打开,则会抛出OSError。
open()函数的格式如下:

open(文件名称,mode="",encoding="")

参数encoding设置文件的编码格式,参数mode设置文件的打开模式默认的文件访问模式为只读(r),比如下表文件打开模式:

模式 名称 含义
r 只读 以只读的形式打开,若文件不存在或无法找到,则open()函数调用失败
w 只写 以只写的形式打开,若文件已存在,则重写文件,否则创建文件
a 追加 以只写的形式打开,只允许在该文件末尾追加数据,若文件不存在,则创建文件

默认的模式为文本模式(不加后缀时),若要以二进制模式打开文件,则可在r、w、a后面加上 b ,即rb、wb、ab。

可以在后面加上“+”,表示以可读或可写的方式打开该文件,比如rb+,它表示在二进制模式下,以可读或可写的方式打开该文件。

(二)关闭

程序执行完毕后,系统会自动关闭由该程序打开的文件,由于打开的文件数量有限以及打开过多会占用系统资源,所以当文件使用完毕后主动关闭文件以释放内存,tg1使用内置的close()方法关闭文件,该方法没有参数。
调用格式如下:

文件名称.close()

二、读取数据

(一)read()方法

通过read()方法从文件中读取指定数据,该方法内size参数用于设置读取数据的字节数,缺省情况下,读取文件所有的数据
创建了一个file1.text文件,在pythonProject项目下,其文本内容为“HELLO WORLD!”:

另在项目中创建一个名称为test.py的python文件,下列为python代码,打开并通过read()方法有参/无参读取数据:

# 读取文件file1.txt中5个字节以及全部数据
get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read(5))
get_data.close()
get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read())
get_data.close()

运行结果如下:

(二)readline()方法

readline()方法用于从文件中读取一行数据
file2.txt文件:

这里,也是谷歌量子 AI 实验室 (Quantum AI Campus) 的新家。
在这里,一群来自全世界最优秀的工程师、量子力学研究者、艺术家和自然科学家正在共同协作。

python文件:

# 读取文件file2.txt中一行数据
get_data = open("file2.txt", mode="r", encoding="utf-8")
print(get_data.readline())
get_data.close()

运行结果如下:

(三)readlines()方法

readlines()方法用于一次读取文件的所有内容,该方法会返回一个列表,文件中的每一行对应列表中的一个元素。
file2.txt文件:

这里,也是谷歌量子 AI 实验室 (Quantum AI Campus) 的新家。
在这里,一群来自全世界最优秀的工程师、量子力学研究者、艺术家和自然科学家正在共同协作。

python文件:

# 读取文件file2.txt的所有内容
get_data = open("file2.txt", mode="r", encoding="utf-8")
print(get_data.readlines())
get_data.close()

运行结果如下:

三、写入数据

(一)write()方法

通过write()方法用于向文件中写入数据,若写入数据成功,则该方法会返回写入该文件的数据长度
file1.txt文件:

HELLO WORLD!

python文件:

get_data = open("file1.txt", mode="w+", encoding="utf-8")
print(get_data.write("hello python!"))
get_data.close()

运行结果如下,可看出本次写入file1.txt文件的数据长度为13:

(二)writelines()方法

writelines()方法用于向文件中写入字符串序列,可以是一个字符串列表。
file1.txt文件:

hello world!

python文件:

get_data = open("file1.txt", mode="w+", encoding="utf-8")
get_data.writelines(["python", "hello"])
get_data.close()

file1.txt文件内容如下:

四、定位读取

Python有用于获取文件读/写位置的tell()方法和修改文件读/写位置的seek()方法。

(一)获取文件读/写位置

通过tell()方法获取文件的读/写位置。
file1.txt文件:

HELLO WORLD!

python文件,首先使用read()方法读取文件中的两个字节,然后通过tell()方法输出文件读取的位置:

get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read(2))
print(get_data.tell())
get_data.close()

运行结果如下:

(二)设置文件读/写位置

通过seek()方法设置文件的读/写位置,通过移动文件读取指针到文件的指定位置,它有两个参数分别为:第一个参数为offset偏移量表示读/写位置需移动的字节数;第二个参数为from指定文件的读/写位置,它的取值有0、1和2,分别表示在开始位置读/写、在当前位置读/写和在末尾位置读/写,默认情况下from值为0(即从文件开始位置读/写)。
file1.txt文件:

abcdefgh

python文件:

get_data = open("file1.txt", mode="r", encoding="utf-8")
get_data.seek(0)
print(get_data.read())
get_data.seek(3)
print(get_data.read())
get_data.seek(0, 0)
print(get_data.read())
get_data.seek(5, 0)
print(get_data.read())
get_data.close()

运行结果如下:

五、目录

(一)创建目录

通过os模块中的mkdir()函数创建目录,函数内参数为目录的名称,另外还有参数mode表示目录的数字权限。
python代码:

import os
os.mkdir("package2")

创建成功,在项目栏中看到package0目录:

也可以在PyCharm中直接通过项目创建目录,右键项目,找到新建——目录如下:

输入目录名称,即可创建目录:

创建完成后可以在项目栏看到所创建的目录package2:

(二)删除目录

通过shutil模块中的rmtree()函数可删除目录。
例如输入一个目录,首先通过os模块中的exists()函数判断该目录是否存在,若存在则删除该目录,否则创建一个新目录,python代码如下:

import os
import shutilcontent = input("请输入要查找的目录:")
i = os.path.exists("content")
if i is True:shutil.rmtree("content")print("该目录已存在!已自动删除!")
else:print("该目录不存在!")Y_N = input("是否创建新目录?")if Y_N == "Y" or Y_N == "y":os.mkdir(content)print(f"{content}目录已创建成功!")

运行结果如下:

项目栏中:

(三)获取目录下的文件列表

可以通过os模块中的listdir()函数获取目录下的文件列表。
python代码:

import os
print(os.listdir("package1"))

运行结果如下:

七、文件路径

(一)相对路径和绝对路径

文件路径分为相对路径和绝对路径,相对路径是指一个文件或文件夹所在路径与其它文件或文件夹的路径关系,而绝对路径是指从盘符(即磁盘区)到当前位置的路径。

(二)os模块中的关于路径的函数

以下是几个os模块中常用的关于路径的函数:
1、通过os模块中的isabs()函数判断文件或文件夹的路径是否为绝对路径,若为绝对路径则返回True,否则返回False。
python代码:

import os
print(os.path.isabs("file1.txt"))
print(os.path.isabs("file2.txt"))

运行结果如下,可见两个文件的路径都是相对路径:

2、通过os模块中的abspath()函数规范化文件或文件夹路径,即使用该函数将文件或文件夹的路径规范化成绝对路径。
python代码,首先通过isabs()函数判断其路径为相对路径,然后通过abspath()函数将该路径转换为绝对路径:

import os
print(os.path.isabs("file1.txt"))
print(os.path.abspath("file1.txt"))

运行结果如下:

3、通过os模块中的getcwd()函数获取当前路径。
python代码:

#test.py文件
import os
print(os.getcwd())

运行结果如下,输出test.py文件的当前路径:

4、通过os模块中的exists()函数判断路径是否有效存在,若存在则返回True,否则返回False。
5、通过os模块中join()函数拼接路径,函数内的参数即要拼接的路径,若其中要拼接的最后一个路径为空,则拼接生成的路径会以"\"结尾。

Python程序开发——第八章 文件相关推荐

  1. python程序开发模块化_python-17-Python文件两种用途、模块化程序开发

    --------------------------------python文件的两种用途---------------------------------- py文件的两种用途: 1.直接运行 pr ...

  2. Python程序开发——第一章 基本python语法

    目录 前言 一.PyCharm (一)创建工程文件夹 (二)创建 python 文件并运行 二.IDLE 三.Python中的注释用法 四.变量的命名事项 五.基本输入和输出函数 (一)输入和输出 ( ...

  3. python编程课程价格-无锡Python程序开发课程

    大数据及机器学习必备语言,推荐9-13岁青少年学习. 帮助孩子掌握Python语言的主要核心基本语法.掌握Python面向对象开发的基本概念.掌握Python和Pygame进行2D游戏开发. 小码研究 ...

  4. python少儿编程 在线课程-宁波Python程序开发课程

    课程详情 大数据及机器学习必备语言,推荐9-13岁青少年学习. 帮助孩子掌握Python语言的主要核心基本语法.掌握Python面向对象开发的基本概念.掌握Python和Pygame进行2D游戏开发. ...

  5. 少儿编程python线上课程-北京Python程序开发课程

    课程详情 大数据及机器学习必备语言,推荐9-13岁青少年学习. 帮助孩子掌握Python语言的主要核心基本语法.掌握Python面向对象开发的基本概念.掌握Python和Pygame进行2D游戏开发. ...

  6. python 程序开发以及推荐机制设计

    参考文章:Python程序开发教程 https://wenku.baidu.com/view/d4efe6396d175f0e7cd184254b35eefdc8d315db.html?from=se ...

  7. Python应用开发——制作bin文件

    Python应用开发--制作bin文件 目录 Python应用开发--制作bin文件 前言 1 环境搭建 2 代码编写与测试 结束语 前言 什么是bin? bin是二进制文件,其用途依系统或应用而定. ...

  8. 用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)

    目录 打包前置知识 一.什么是exe可执行文件? 二.为什么要将 Python 程序打包为 exe 可执行文件? 三.为什么 Python 程序不能直接运行呢? 四.我们用什么来打包 Python 文 ...

  9. Python程序开发

    __init__()方法按照参数的有无(self除外)可分为有参构造方法和无参构造方法. 前面在类中定义的属性是类属性,可以通过对象或类进行访问:在构造方法中定义的属性是实例属性,只能通过对象进行访问 ...

最新文章

  1. Mybatis中的jdbcType的作用
  2. 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...
  3. 提升开发效率的十个工具
  4. 学C++的你今天鄙视PHP了吗?
  5. SQL服务器名称更改
  6. 2019西安交通大学计算机复试,2019年西安交通大学复试分数线
  7. 【前端】关于事件的代码片段
  8. 华为静态路由配置及讲解
  9. python 流程控制基础知识总结 和九九乘法表、质数、水仙花数、猜拳游戏练习
  10. 方舟修改服务器代码,方舟生存进化服务器可以用代码吗
  11. 字符串匹配算法KMP详解
  12. 华为HCIE云计算培训笔记第3天
  13. 教你win7如何共享打印机的详细教程
  14. 今日头条php笔试题,2017年今日头条笔试题目
  15. 禁止搜狗拼音输入法自动更新
  16. mysql sp who_sp_who使用
  17. Gom传奇引擎的微端连不上的原因是什么?附:微端配置教程
  18. 如何使用matlab进行频域分析
  19. 机器学习 刀光剑影 之屠龙刀_腾讯大数据
  20. 镜头选型——景深计算

热门文章

  1. 顶级极客技术挑战赛,你敢来挑战吗?| 大神登峰造极
  2. 详解分布式一致性机制
  3. MySQL大表优化技术要点科普
  4. 数据结构--图(Graph)详解(四)
  5. 【城市沙龙】LiveVideoStack Meet|上海:流媒体无处不在
  6. 音视频技术开发周刊 | 208
  7. 大牛书单 | 云原生技术领域好书推荐
  8. 2018中国C++大会精彩回顾
  9. http 长连接 短连接
  10. H.264视频RTP负载格式/NALU的类型