概述
打开文件
- 语法:
f = open('文件名', '读写模式')
- 文件的读写模式:
文件模式 | 描述 |
---|---|
'r' | 只读(默认) |
'w' | 只写 |
'a' | 追加 |
'b' | 二进制模式 |
'r+' | 文件可读写,如果文件不存在,则创建新文件;如果文件存在,则从当前位置写入新内容,通过seek函数可以改变当前位置 |
'w+' | 文件可读写,如果文件不存在,则创建新文件;如果文件存在,则清空文件并写入新内容 |
'a+' | 文件可读写,如果文件不存在,则创建新文件;如果文件存在,会将写入的内容添加到原文件的最后 |
操作文件的基本方法
读文件和写文件
- write(string):向文件写入内容,该方法返回写入文件的字节数
- read([n]):读取文件,
n
表示从文件指针位置开始读取n字节;如果不指定则读取所有 - seek(n):重新设置文件指针,
seek(0)
为文件开始位置 - close():关闭文件
f = open('text.txt','a+')
f.write('I love Python')
f.close()
f = open('text.txt','r')
print(f.read())
f.close()
管道输出(Linux系统)
本例要执行的命令有如下三个:
ls -al ~
:列出home目录下的所有文件和目录python filter.py
:从管道接收数据,并过滤出包含readme的文件和目录。filter.py是本例要编写的程序sort
:对过滤结果进行排序
import sys, os, re
# 从标准输入读取全部数据
text = sys.stdin.read()
# 将字符串形式的文件和目录按行拆分,并保存到列表中
files = text.split(os.linesep)
for file in files:
# 匹配文件名和目录名
result = re.match('.*readme.*', file)
if result != None:
print(file)
现在切换到Linux终端,进入 filter.py
文件所在目录,执行如下命令:
ls -al ~ | python filter.py | sort
读行和写行
- readline():用于从文件指针位置读取一整行文本
- readlines():从文件指针位置读取后面所有数据,按行分隔放入列表中
- writelines():该方法需要通过参数指定一个字符串类型的列表,将列表中每一个元素作为单独一行写入文件
f = open('urls.txt', 'a+')
urlList = ['http://geekori.com' + os.linesep, 'https://www.google.com' + os.linesep]
f.writelins(urlList)
f.close()
使用FileInput对象读取文件
针对于大文件,FileInput对象使用缓存机制,并不会一次性读取文件的所有内容,会节省内存资源。
import fileinput
fileobj = fileinput.input('urls.txt')
print(type(fileobj))
for line in fileobj:
line = line.rstrip()
if line != '':
# 输入当前行号和内容
print(fileobj.lineno(),":",line)
else:
# 输出当前正在操作的文件名
print(fileobj.filename()) # 必须在第1行读取后再调用,否则返回None
转载于:https://my.oschina.net/zerobit/blog/3079292
最后
以上就是会撒娇白羊为你收集整理的Python3文件和流打开文件操作文件的基本方法使用FileInput对象读取文件的全部内容,希望文章能够帮你解决Python3文件和流打开文件操作文件的基本方法使用FileInput对象读取文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复