python中常用的文件和目录操作(一)
常用的文件操作
1. 打开文件
- open,它是一个内置函数,可以直接调用
- 语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象
- 参数:file_name--要访问的文件名称的字符串值,access_mode--决定了打开文件的模式:只读、写入、追加等。这个参数是非强制的,默认文件访问模式为只读(r)
- 返回值:返回一个文件对象
| 模 式 | 解释 |
| 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中常用的文件和目录操作(一)的更多相关文章
- python中常用的文件和目录操作(二)
一. os模块概述 python os模块提供了非常丰富的方法用来处理文件和目录 二. 导入os模块: import os 三. 常用方法 1. os.name 输出字符串表示正在使用的平台,如果是w ...
- 第9.11节 Python中IO模块文件打开读写操作实例
为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照 ...
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- Python::OS 模块 -- 文件和目录操作
os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...
- Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)
[转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...
- Python之文件与目录操作(os、zipfile、tarfile、shutil)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...
- python文件及目录操作
python文件及目录操作 读/写文件 新建/打开文件 写入 #举个例子,打开D:\test\data.txt #以写入模式打开文件 #如果test(上级目录)不存在则报错 #如果data.txt(文 ...
随机推荐
- 【题解】Journeys(线段树优化连边)
[#3073. Pa2011]Journeys (线段树优化连边) 这张图太直观了,直接讲透了线段树优化连边的原理和正确性. 考虑建立两颗线段树,一颗是外向树,一颗是内向树,相当于网络流建模一样,我们 ...
- servlet 3.0 的新特性之三对异步处理的支持
一.异步处理 1. 什么是异步处理 原来,在服务器没有结束响应之前,浏览器是看不到响应内容的!只有响应结束时,浏览器才能显示结果! 现在异步处理的作用:在服务器开始响应后,浏览器就可以看到响应内容,不 ...
- SPDY
转载SPDY 是什么 SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为正式标准(现为互联网草案).SPDY 协议旨在通过压缩.多路复用和优 ...
- ACM中使用 JAVA v2. 1
ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...
- A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 )
A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 ) 总结一句 ...
- SpringBoot注解大全*(转发:http://www.cnblogs.com/ldy-blogs/p/8550406.html)
一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...
- 20160422 --Switch…case 总结; 递归算法
13 2016-04-22 11:01:00 Switch…case 总结(网摘) 例题: Console.WriteLine("1.汉堡包"); Console.WriteLi ...
- [笔记]如何将传统的回调函数转换为C#5.0支持的await格式
C#5.0引入了编译器支持的 async 和 await 关键字,这就为开发者提供了使用同步思想写异步代码的方便. 但是有些传统函数仅提供了异步回调实现,如何对其封装,使其可以享受await的便利呢? ...
- python基础深入(元组、字符串、列表、字典)
python基础深入(元组.字符串.列表.字典) 一.列表 1.追加 >>>list = [1,2,3,4] #用于在列表末尾添加新的对象,只能单个添加,该方法无返回值,但是会修改原 ...
- ajax数据请求的理解
一,请求 发送请求有两种方式:get 跟 post . 1.get仅请求数据,不需要服务端做处理,最后会返回指定的资源. 2.post可以提交数据,服务端根据提交的数据做处理,再返回数据. 二,创建X ...