老齐python-基础7(文件操作、迭代)
在python3中,没有file这个内建类型了(python2中,file是默认类型)
1、读文件
创建文件,130.txt 并在里面输入
learn python
http://qiwsir.github.io
qiwsir@gmail.com
>>> f = open("130.txt")
>>> dir(f) #查看方法
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines']
f = open("./codes/130.txt") #当在上级目录时指定文件
for line in f:
print(line)
2、创建文件
>>> nf = open("txtfile.txt","w") #创建txtfile.txt文件
>>> nf.write("This is a new file") #文件中添加一句话,并返回字符串长度
18
>>> nf.close() #关闭打开的文件

只读方式测试
>>> f = open("txtfile.txt")
>>> f
<_io.TextIOWrapper name='txtfile.txt' mode='r' encoding='UTF-8'>
>>> f = open("txtfile.txt","r")
>>> f
<_io.TextIOWrapper name='txtfile.txt' mode='r' encoding='UTF-8'>
1)w 模式,以写方式打开文件,可向文件写入信息。如果文件存在则清空文件,再写新内容。
2)a 模式,以追加模式打开文件(一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
也可以用这种模式打开一个不存在的文件,即新建
>>> fn = open("mdfile.md","a")
>>> fn
<_io.TextIOWrapper name='mdfile.md' mode='a' encoding='UTF-8'>
>>> fn.write("python can helo you to be agreat programmer.")
44
>>> fn.close()
3、使用with
在对文件进行写入操作之后,都要执行file.close(),它的作用就是将文件关闭,同事也将内容保存在文件中。
除了显示的操作关闭之外,还有另外一种方法with,更加pythonic
>>> with open("mdfile.md","a") as f:
... f.write("\nI am a Pythoner.")
...
17
4、文件的状态
有时候要获取一个文件的状态(也成为属性),比如创建日期、修改日期、大小等。
>>> import os
>>> file_stat = os.stat("mdfile.md") #使用os模块读取文件属性
>>> file_stat
os.stat_result(st_mode=33188, st_ino=8672850, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=61, st_atime=1505309783, st_mtime=1505309775, st_ctime=1505309775)
>>> file_stat.st_ctime
1505309775.0
>>> import time #使用time模块读取时间
>>> time.localtime(file_stat.st_ctime)
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=13, tm_hour=21, tm_min=36, tm_sec=15, tm_wday=2, tm_yday=256, tm_isdst=0)
5、read/readline/readlines
>>> f = open("mdfile.md")
>>> f.read(12) #读取前12个字符
'python can h'
>>> f.read() #如果不指定就输出到EOF为止(End of file)
'elo you to be agreat programmer.\nI am a Pythoner.' #指针的原因没有读取前部分
readline,逐行读取文件内容
>>> f.readline() #每执行一次读取一行
'python can helo you to be agreat programmer.\n'
>>> f.readline()
'I am a Pythoner.'
>>> f.readline()
''
readlines,将文件各行读出来,放到一个列表中返回
>>> f = open("mdfile.md")
>>> f.readlines()
['python can helo you to be agreat programmer.\n', 'I am a Pythoner.']
>>> f = open("mdfile.md")
>>> for line in f.readlines(): print(line)
...
python can helo you to be agreat programmer.
I am a Pythoner.
>>> f = open("mdfile.md")
>>> for line in f: print(line) #看似相同其实不同,readlines已经在内存中生成列表
...
python can helo you to be agreat programmer.
I am a Pythoner.
6、读很大的文件
>>> import fileinput
>>> for line in fileinput.input("you.md"): print(line,end='')
...
You Raise Me Up
When I am down 当我失意低落之时
and, oh my soul, so weary; 我的精神,是那么疲倦不堪
When troubles come 当烦恼困难袭来之际
and my heart burdened be; 我的内心,是那么负担沉重
Then, I am still 然而,我默默的伫立
and wait here in the silence, 静静的等待
Until you come 直到你的来临
and sit awhile with me. 片刻地和我在一起
7、seek
读取文件,指针也随着运动,当读取结束时,这阵就移动了相应的位置。
>>> f = open("you.md")
>>> f.readline()
'You Raise Me Up\n'
>>> f.readline()
'When I am down 当我失意低落之时\n'
>>> f.tell() #查看指针位置
56
>>> f.seek(0) #重置指针位置
0
>>> f.readline()
'You Raise Me Up\n'
>>> f.tell()
16
>>> f.readline()
'When I am down 当我失意低落之时\n'
>>> f.seek(4) #将指针移动到对应位置
4
>>> f.tell()
4
>>> f.readline()
'Raise Me Up\n'
指针特性:
seek(offset[,whence])是这个函数的完整形式,以上我们省略了whence,在默认情况下都是以文件的开头为参照物进行移动的,即whence=0 whence,还可以有别的值,具体:
1)默认值是0,表示从文件开头开始计算指针偏移的量(简称偏移量)
2)当whence=1,表示从当前位置开始计算偏移量。
3)当whence=2,表示相对文件末尾移动
二、初识迭代
循环(Loop),指的是在满足条件的情况下,重复执行同一段代码,如while语句。
迭代(Iterate),指的是按照某种顺序诸葛访问对象(如列表)中的每一项,如for语句。
递归(Recursion),指的是一个函数不断调用自身的行为,如著名的斐波那契数列。
遍历(Traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。for循环就是一种遍历。
老齐python-基础7(文件操作、迭代)的更多相关文章
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- python基础4文件操作
在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...
- python基础(10):文件操作
1. 初识文件操作 使⽤python来读写⽂件是非常简单的操作.我们使⽤open()函数来打开⼀个⽂件,获取到⽂ 件句柄,然后通过⽂件句柄就可以进⾏各种各样的操作了,根据打开⽅式的不同能够执⾏的操 作 ...
- python基础之文件操作
对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...
- Day3 Python基础学习——文件操作、函数
一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...
- python基础14_文件操作
文件操作,通常是打开,读,写,追加等.主要涉及 编码 的问题. #!/usr/bin/env python # coding:utf-8 ## open实际上是从OS请求,得到文件句柄 f = ope ...
- 【python基础】文件操作
文件操作目录 一 .文件操作 二 .打开文件的模式 三 .操作文件的方法 四 .文件内光标移动 五. 文件的修改 一.文件操作介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用pyt ...
- Python基础 之 文件操作
文件操作 一.路径 文件绝对路径:d:\python.txt 文件相对路径:在IDEA左边的文件夹中 二.编码方式 utf-8 gbk... 三.操作方式 1.只读 r 和 rb 绝对路径的打开操作 ...
- Python基础--基本文件操作
全部的编程语言都一样,学完了一些自带的数据机构后,就要操作文件了. 文件操作才是实战中的王道. 所以,今天就来分享一下Python中关于文件的一些基本操作. open方法 文件模式 这个模式对于写入文 ...
- Python基础学习——文件操作、函数
一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...
随机推荐
- 08day03
一.eclipse的使用 可能是全宇宙最好用的IDE debug 查看执行过程 查看源码 二.模块的常用方法 __name__ __file__ __doc__ 三.函数 参数 参数默认值 可变参数 ...
- Linux 挂载系统盘
适用系统:非IO优化+SSD云盘Linux(Redhat , CentOS,Debian,Ubuntu)实例,IO优化实例+SSD云盘数据盘分区挂载建议使用脚本:工具:auto_fdisk_ssd.s ...
- js字符串操作方法
1.字符方法: str.charAt(): 可以访问字符串中特定的字符,可以接受0至字符串长度-1的数字作为参数,返回该位置下的字符,如果参数超出该范围,返回空字符串,如果没有参数,返回位置为0的字符 ...
- map、filter、reduce、lambda
一.map.filter.reduce map(fuction , iterable) 映射 对可迭代对象中的每一项,使用函数去改变 filter(function, iterable) 过滤 可迭代 ...
- es6环境中,export与import使用方法
前言 参考自阮一峰大神的教程:http://es6.ruanyifeng.com/?search=export&x=6&y=5#docs/module#export-命令 声明:如有问 ...
- 使用 Express 实现一个简单的 SPA 静态资源服务器
背景 限制 SPA 应用已经成为主流,在项目开发阶段产品经理和后端开发同学经常要查看前端页面,下面就是我们团队常用的使用 express 搭建的 SPA 静态资源服务器方案. 为 SPA 应用添加入口 ...
- 使用aidl的项目结构以及小的注意事项
在app的build.gradle里面添加: sourceSets{ main{ java.srcDirs = ['src/main/java','src/main/aidl'] } }
- cpu的用户态和内核态和内存的用户空间内核空间
谈到CPU的这两个工作状态,也就是处理器的这两个工作状态,那我们有必要说一下为什么搞出这两个鬼玩意出来. 用过电脑的娃娃们肯定知道在一个系统中既有操作系统的程序,也由普通用户的程序.但那么 ...
- Unity 2d 的 SpriteMask为游戏表现带来多种可能性
孙广东 2017.7.22 http://blog.csdn.NET/u010019717 SpriteMask 是Unity 2017.1 开始添加2d功能!, Spri ...
- Vim技能修炼教程(11) - 代码折叠
上一讲我们是程序员篇的第一讲,关于代码跳转.代码跳转是一个付出很少收获很大的功能.这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠. 代码折叠 折叠的类型 折叠有下面几种类型: * Ma ...