常用的文件操作

1. 打开文件

  • open,它是一个内置函数,可以直接调用
  • 语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象
  • 参数:file_name--要访问的文件名称的字符串值,access_mode--决定了打开文件的模式:只读、写入、追加等。这个参数是非强制的,默认文件访问模式为只读(r)
  • 返回值:返回一个文件对象
模 式 解释
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
r+ 打开一个文件用于读写。文件指针将会放在文件的开头
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果不存在,则创建新文件
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果不存在,则创建新文件
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾。也就是说,新的内容将会被写入已有内容之后。如果该文件不存在,则创建新文件进行写入
a+ 打开一个文件用于写入。如果文件已存在,文件指针将会放在文件的末尾。文件打开时会是追加模式。如果文件不存在,则创建新文件用于读写

2. 关闭文件: file_object.close()

3. 文件的读写操作

read()方法:

  • read(size=-1)方法从一个打开的文件中读取一个字符串
  • 参数: size--传递你要读取的字节数,如果不传递,默认是-1,读取所有的数据,
  • 读完了之后。指针会定位到读完之后的位置
  • 返回值: size=0,返回b"",size<0,返回读取的所有的字节数,size>0,返回指定的字节数

readline()方法:

  • 从文件读取整行,包括"\n"字符
  • 参数:size--如果传递一个非负的参数,返回指定大小的字节数
  • 返回值:返回从字符串中读取的字节

readlines()方法:

  • 读取所有的行并返回字符串列表,如果碰到EOF则返回空字符串
  • 参数:无
  • 返回值:返回所有的字符串列表

write()方法:

  • write()方法可将任何一个字符串写入一个打开的文件
  • 注意:write()方法不会在字符串的结尾添加换行符("\n"),所以无法实现自动换行。需要自己手动添加"\n"来实现换行

writelines()方法:

  • 传入你要写的列表内容,就可以写入多行

4. 示例

假设在pycharm的工作目录下新建了一个test.txt的文本文件,由于包含中文,我们保存时设置编码为"utf-8"。文件内容如下:

name: Peter
age: 29
height: 175
weight: 70
country: 英国
hobby: play-guitar

读的方法

#open()和read()方法

fo = open("test.txt")content = fo.read()
print(content)结果:
锘縩ame: Peter
age: 29
height: 175
weight: 70
country: 鑻卞浗
hobby: play-guitar乱码了,我们可以这样解决:fo = open("test.txt", encoding="utf-8")content = fo.read()
print(content)结果:
name: Peter
age: 29
height: 175
weight: 70
country: 英国
hobby: play-guitar#readlines()方法
fo = open("test.txt", encoding="utf-8")lines = fo.readlines()
print(lines)['\ufeffname: Peter\n', 'age: 29\n', 'height: 175\n', 'weight: 70\n', 'country: 英国\n', 'hobby: play-guitar\n', '\n']

写的方法

write()方法:如果文件已存在,会覆盖

#write()方法

fo = open("test.txt", "w")fo.write("city: London")

fo.close()我们打开test.txt文件会发现,文件只剩下:city: London

注意:在同一个w模式下,两次写入时,第一次写入会已经存在的内容,第二次写入不会覆盖第一次写入的内容(可以理解为指针移了)

fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,")
fo.write("第二次写入不会覆盖第一次写入的内容")fo.close()结果:第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容

write()无法实现自动换行,需要手动添加"\n"来实现换行

fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,\n")
fo.write("第二次写入不会覆盖第一次写入的内容")fo.close()结果:第一次写入会覆盖已经存在的内容,
第二次写入不会覆盖第一次写入的内容

writelines()传递列表来写入多行,不会自动换行,需手动添加

fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,\n")
fo.write("第二次写入不会覆盖第一次写入的内容\n")
fo.writelines(["111111\n", "222222\n"])fo.close()结果第一次写入会覆盖已经存在的内容,
第二次写入不会覆盖第一次写入的内容
111111
222222

追加的方法

fo = open("test.txt", "a", encoding="utf-8")
fo.write("哈哈哈哈哈哈")fo.close()结果:第一次写入会覆盖已经存在的内容,
第二次写入不会覆盖第一次写入的内容
111111
222222
哈哈哈哈哈哈

5. 文件定位

tell()和seek()方法详见:【译】:文件对象的方法

转载于:https://www.cnblogs.com/my_captain/p/8975964.html

python中常用的文件和目录操作(一)相关推荐

  1. 8 mv命令_Linux常用操作命令——文件和目录操作

    第一章:Linux常用操作命令 1.1 文件和目录操作 1.1.1 显示工作目录路径的命令 pwd 语法:pwd 显示当前目录为 /root/dir1; 1.1.2 更改工作目录路径命令 cd 语法: ...

  2. 【python进阶】_文件和目录操作

    创建目录 os.makedirs 可以递归的创建目录结构,比如 import os os.makedirs('tmp/python/fileop',exist_ok=True) 会在当前工作目录下面创 ...

  3. python查看目录是否存在_如何检查Python中是否存在文件或目录

    编写Python脚本时,仅当文件或目录不存在时,才可能要执行某些操作.例如,您可能想读取数据或将数据写入配置文件,或者仅在不存在的情况下才创建文件. 在Python中,有多种方法可以检查文件是否存在并 ...

  4. python tts 保存_Python 文件和目录操作学习

    文件与文件路径 文件有两个关键属性:文件名和路径. 路径指明了文件在计算机上的位置. 文件名中,最后一个句点之后的部分称为文件的"扩展名",它指出了文件的类型 目录也叫文件夹,文件 ...

  5. python递归实现文件复制_在python中递归复制文件或目录

    python似乎有复制文件的功能(如shutil.copy)和复制目录的功能(如shutil.copytree),但我没有找到同时处理这两者的功能.当然,检查您是想复制一个文件还是一个目录是很简单的, ...

  6. 【思维导图】Python中常用的8种字符串操作

    文章末尾获取思维导图高清源文件 拼接字符串 使用"+"可以对多个字符串进行拼接 语法格式:str1 + str2 >>> str1 = "aaa&quo ...

  7. WinForm中关于选择文件、目录操作

    一.实现效果 1.1.选择文件 1.2.选择目录 二.核心脚本 /*** * Title:"数据采集" 项目 * 主题:选择本地文件 * Description: * 功能: * ...

  8. Python中常用图像处理库

    Python中常用图像处理库 文章目录 Python中常用图像处理库 1 OpenCV-Python 2 Numpy 3 matplotlib 4 skimage 5 PIL(Python Imagi ...

  9. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

最新文章

  1. 成都python工作-在成都学习Python能做什么?到底有没有发展前途?
  2. mysql使用数据库预处理_php中对MYSQL操作之预处理技术(2)数据库dql查询语句
  3. 转载:页面加载swf插件:swfobject
  4. 高等数学:第十二章 微分方程(1)微分方程的概念,可分离变量的微分方程,齐次方程
  5. 同一个浏览器打开不同端口的程序登录_【BI报表制作】单点登录与个性化开发...
  6. Yarn的资源调度与隔离
  7. Visual Studio Code 1.42 发布
  8. Vue实战(六)通用Table组件
  9. 【黑马Bootstrap笔记】Bootstrap快速入门
  10. 8Manage革新多项目管理的沟通方式
  11. 手机的内核版本、基带版本等都是什么意思?
  12. 视频直播iOS端技术
  13. 【好网】通信专业的大四研一研二看看:以求职经验教你选择导师专业和科研方向...
  14. 集思录封闭基金数据python爬取写入excel表
  15. Ubuntu18.04+ros-melodic (包括Ubuntu16.04+ros-kinetic)乐视奥比中光相机在nano、tx2、PC等设备上的安装与使用,并解决无法显示rgb信息的问题
  16. 基于XP系统IE极光漏洞渗透
  17. 在Ubuntu16.04下安装caffe2
  18. JavaScript练习 - 数字转换成罗马数字
  19. Fluent求解器——多相流模型
  20. JavaScript实现猫吃鱼小游戏

热门文章

  1. html网页设计简单吗,如何做一个简单的网页设计
  2. element ui 第一列相同数据相同合并单元格
  3. 设计模式----访问者模式
  4. WAL模式 Android,SQLite 数据库 WAL 工作模式原理简介
  5. 如何连接别人打包来的虚拟机
  6. 为什么在学习编程的时候,什么都记不住?理由只有一个
  7. java ognl_java ognl
  8. numpy.fft 实现 czt (Chirp Z-transform)
  9. 依图云从java后端面经
  10. 为什么做生意可以让双方生活的更好?