常用的文件操作

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()方法详见:【译】:文件对象的方法

python中常用的文件和目录操作(一)的更多相关文章

  1. python中常用的文件和目录操作(二)

    一. os模块概述 python os模块提供了非常丰富的方法用来处理文件和目录 二. 导入os模块: import os 三. 常用方法 1. os.name 输出字符串表示正在使用的平台,如果是w ...

  2. 第9.11节 Python中IO模块文件打开读写操作实例

    为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照 ...

  3. Python中的文件和目录操作实现

    Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...

  4. Python::OS 模块 -- 文件和目录操作

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...

  5. Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  6. 【转】python 历险记(四)— python 中常用的 json 操作

    [转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...

  7. 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)

    [转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...

  8. Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  9. python文件及目录操作

    python文件及目录操作 读/写文件 新建/打开文件 写入 #举个例子,打开D:\test\data.txt #以写入模式打开文件 #如果test(上级目录)不存在则报错 #如果data.txt(文 ...

随机推荐

  1. CentOS 7.4 下安装Epel源和Nginx

    EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL.CentOS和Scientif ...

  2. Python3.6全栈开发实例[001]

    检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. li = [11,22,33,44,55,66,77,88,99,000,111,222] def func1(l ...

  3. 如何用Python输出一个斐波那契Fibonacci数列

    a,b = 0, 1 while b<100: print (b), a, b = b, a+b

  4. Chrome 正在受到自动化软件控制 – 解决办法

    1.在这个文件下修改一行代码就可以了,文件路径E:\Miniconda3\envs\env3\Lib\site-packages\selenium\webdriver\chrome\options.p ...

  5. 0405-服务注册与发现-客户端负载均衡-Ribbon 同Eureka使用,Ribbon脱离Eureka使用

    一.Ribbon 同Eureka使用,注意事项 前几节一同使用,注意事项: 如果没有其他区域数据源,则根据客户端配置进行猜测(与实例配置相反).能够获取eureka.client.availabili ...

  6. 0201-开始使用Spring Cloud实战微服务准备工作

    1.Spring Cloud是什么 基于spring boot,之上快速构建分布式系统的工具集 服务注册和发现[eureka.Consul.Zookeeper].服务负载均衡[Ribbon,feign ...

  7. 流量分析系统---flume(测试flume+kafka)

    1.在flume官方网站下载最新的flume     wget http://124.205.69.169/files/A1540000011ED5DB/mirror.bit.edu.cn/apach ...

  8. Python 1 数据类型的操作

    一.数字(Number) 1.数学函数: 函数 返回值 ( 描述 ) abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) ...

  9. ETL应用:一种处理接口的Pro*C实现方法

    2007年,当时项目所有ETL采用C编写,实现了ETL基本功能.当接口很多时,为保证文件获取效率,做好接口可配置:文件维护中经常会出现接口晚到情况,需要有一种方法能将接口晚到信息写入数据库,便于短信告 ...

  10. HAproxy 介绍

    HAproxy 介绍 (1)HAProxy 是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy ...