博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 文件操作
阅读量:2455 次
发布时间:2019-05-10

本文共 2321 字,大约阅读时间需要 7 分钟。

Linux下万物皆文件,所以处处都要遇到对文件的处理操作,win 系统下也一样,更何况python 的跨平台如此强大了:

今天我们来了解python 对文件的操作

1:读文件

要以读文件的模式打开一个文件,使用python 内置函数open(),格式如下

f= open("test.open.txt",'r')   ###   open函数("文件名","打开文件使用的模式)  如果文件不存在,则报错提示

 

如果文件打开成功,就可以使用read()方法一次性读取文件内容,所有的内容读到内存,用一个str对象表示,

f.read()  ###  "hello world"

 

最后我们调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量是有限的

f.close()  ### 关闭文件

 

这样感觉是不是很麻烦,每次都要打开关闭,而且很可能就是会忘记关闭,为了解决这个问题,我们可以使用python 的with 语句来自动帮我们调用close()方法:

with open("test.open.txt",'r') as f:    print(f.read())

是不是感觉更简洁了,而且也不用调用close()方法

如果文件特别大,比如几个G或几十G,我们依然用read()方法时,内存肯定”吃”不定,为了预防这种现象发生,我们可以使用read(size)方法,每次只读取size个字节的内容,另外,也可以使用readline()每次只读取一行内容,调用 readlines()一次读取所有内容并按行返回list,

下面我们分别来使用这些方法

1:read()方法,一次读入所有内容

with open("test.open",'r') as f:    print(f.read())### 输出结果this is a test txtmy name is zhangmy age is .....

 

2:readline()方法,一次读入一行内容,逐行向下读取

with open("test.open",'r') as f:    print(f.readline())    print(f.readline())    print(f.readline())### 输出结果this is a test txtmy name is zhang

这里我们发现读取行时,出现了空格,是因为python 不会删除行结束符,这个操作只能程序员自己解决:

我们可以strip()方法

with open("test.open","r") as f:    print(f.readline().strip())    print(f.readline().strip())    print(f.readline().strip())### 输出结果my name is ....my job is ....my age is ....

 

 

 

3:readlines()方法,读入所有内容,返回列表形式

with open("test.open",'r') as f:    print(f.readlines())### 输出结果['\n', 'this is a test txt\n', 'my name is zhang\n', 'my age is .....\n']

 

二:写文件

对文件进行写操作使用python 的write()方法

首先打开文件时需要使用”w” 写模式

with open("test.open",'w') as f:    f.write("my name is ....\n")    f.write("my job is ....\n")    f.close()with open("test.open",'r') as f:    print(f.read())    ### 输出结果my name is ....my job is ....

我们发现,原先我们里面的内容没有了,这是因为w是以写模式创建一个文件,而不是打开,也就是覆盖了原来的文件,内容也被清空。那么我可以使用追加的方法

三:追加

with open("test.open",'a') as f:    f.write("my age is ....\n")    f.close()with open("test.open","r") as f:    print(f.read())### 输出结果my name is ....my job is ....my age is ....

a 模式代表追加,如果这个文件不存在,a模式会自动创建文件,并写入。

 

四:其他

模式,除了读,写,追加以外,python 还提供了很多模式:

 

五:文件的其他方法

1:|  (...) :待大神解救

 

2:|  fileno(...) :返回文件的描述符

 

3: | flush(...)  : 把缓冲区的数据刷到硬盘,而不是被动的等待输出缓冲区被写入

 

4:|  isatty(...) :布尔内建函数,当文件是一个类try设备时返回 True,否则返回False:

 

5: | (...)待大神解救

 

6:|  seek(...) :可以在文件中移动文件指针到不同的位置

 

7: | seekable(...)待大神解救

 

8:|  tell(...) : 显示当前的位置

 

9: | truncate(...) :将文件截取到当前文件指针位置或者到给写size,以字节为单位

 

10:|  writable(...)待大神解救    

 

 

 

 

你可能感兴趣的文章
快速了解Kubernetes微服务中的通信
查看>>
如何使您的Kotlin Android动画可访问
查看>>
github pages_使用GitHub Pages和Lighthouse增强您的开发人员产品组合
查看>>
JavaScript命名约定:注意事项
查看>>
html:漂亮的原生表格_HTML表格:关于它们的所有知识
查看>>
sqoop架构_SQOOP架构的深入介绍
查看>>
自行车车把会吧车刮坏吗_花10分钟即可开始使用车把
查看>>
在线学位课程_如何选择计算机科学学位课程
查看>>
React入门指南
查看>>
机器学习技术现状_教育技术如何颠覆传统学习的现状
查看>>
算法渐近性质分析_神奇宝贝解释的渐近分析:深入研究复杂性分析
查看>>
工厂用抽象类比接口_用简单的现实类比解释硬编码概念
查看>>
aws lambda使用_如何使用AWS Lambda和S3构建无服务器URL缩短器
查看>>
c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
查看>>
ruby on rails_我成为了Ruby on Rails和React的贡献者,你也可以
查看>>
React模式:集中式PropTypes
查看>>
esp freertos_如何开始使用FreeRTOS和ESP8266
查看>>
玻璃上的编码喜悦(+ 10史诗般的Epigrams)
查看>>
classlist使用方法_如何通过使用HTML5的classList API在没有jQuery的情况下操作类
查看>>
openstack文档_八分钟的升级,激发了文档贡献,以及更多的OpenStack新闻
查看>>