这两天身体不给力,拖欠了每天发讲座的约定,看官见谅。

红头文件,是某国特别色的东西,在python里不需要,python里要处理的是计算机中的文件,包括文本的、图片的、音频的、视频的等等,还有不少没见过的扩展名的,在linux中,不是所有的东西都被保存到文件中吗?文件,在python中,是一种对象,就如同已经学习过的字符串、数字等一样。

先要在交互模式下查看一下文件都有哪些属性:

>>> dir(file)

['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']

然后对部分属性进行详细说明,就是看官学习了。

打开文件

在某个文件夹下面建立了一个文件,名曰:130.txt,并且在里面输入了如下内容:

learn python

http://qiwsir.github.io

qiwsir@gmail.com

此文件以供三行。

下图显示了这个文件的存储位置:

在上面截图中,我在当前位置输入了python(我已经设置了环境变量,如果你没有,需要写全启动python命令路径),进入到交互模式。在这个交互模式下,这样操作:

>>> f = open("130.txt") #打开已经存在的文件

>>> for line in f:

... print line

...

learn python

http://qiwsir.github.io

qiwsir@gmail.com

将打开的文件,赋值个变量f,这样也就是变量f跟对象文件130.txt用线连起来了(对象引用)。

接下来,用for来读取文件中的内容,就如同读取一个前面已经学过的序列对象一样,如list、str、tuple,把读到的文件中的每行,赋值给变量line。也可以理解为,for循环是一行一行地读取文件内容。每次扫描一行,遇到行结束符号\n表示本行结束,然后是下一行。

从打印的结果看出,每一样跟前面看到的文件内容中的每一行是一样的。只是行与行之间多了一空行,前面显示文章内容的时候,没有这个空行。或许这无关紧要,但是,还要深究一下,才能豁然。

在原文中,每行结束有本行结束符号\n,表示换行。在for语句汇总,print line表示每次打印完line的对象之后,就换行,也就是打印完line的对象之后会增加一个\n。这样看来,在每行末尾就有两个\n,即:\n\n,于是在打印中就出现了一个空行。

>>> f = open('130.txt')

>>> for line in f:

... print line, #后面加一个逗号,就去掉了原来默认增加的\n了,看看,少了空行。

...

learn python

http://qiwsir.github.io

qiwsir@gmail.com

在进行上述操作的时候,有没有遇到这样的情况呢?

>>> f = open('130.txt')

>>> for line in f:

... print line,

...

learn python

http://qiwsir.github.io

qiwsir@gmail.com

>>> for line2 in f: #在前面通过for循环读取了文件内容之后,再次读取,

... print line2 #然后打印,结果就什么也显示,这是什么问题?

...

>>>

如果看官没有遇到上面问题,可以试试。遇到了,这就解惑。不是什么错误,是因为前一次已经读取了文件内容,并且到了文件的末尾了。再重复操作,就是从末尾开始继续读了。当然显示不了什么东西,但是python并不认为这是错误,因为后面就会讲到,或许在这次读取之前,已经又向文件中追加内容了。那么,如果要再次读取怎么办?就从新来一边好了。

特别提醒看官,因为当前的交互模式是在该文件所在目录启动的,所以,就相当于这个实验室和文件130.txt是同一个目录,这时候我们打开文件130.txt,就认为是在本目录中打开,如果文件不是在本目录中,需要写清楚路径。

比如:在上一级目录中(~/Documents/ITArticles/BasicPython),加入我进入到那个目录中,运行交互模式,然后试图打开130.txt文件。

>>> f = open("130.txt")

Traceback (most recent call last):

File "", line 1, in

IOError: [Errno 2] No such file or directory: '130.txt'

>>> f = open("./codes/130.txt") #必须得写上路径了(注意,windows的路径是\隔开,需要转义。对转义符,看官看以前讲座)

>>> for line in f:

... print line

...

learn python

http://qiwsir.github.io

qiwsir@gmail.com

>>>

创建文件

上面的实验中,打开的是一个已经存在的文件。如何创建文件呢?

>>> nf = open("131.txt","w")

>>> nf.write("This is a file")

就这样创建了一个文件?并写入了文件内容呢?看看再说:

真的就这样创建了新文件,并且里面有那句话呢。

看官注意了没有,这次我们同样是用open()这个函数,但是多了个"w",这是在告诉python用什么样的模式打开文件。也就是说,用open()打开文件,可以有不同的模式打开。看下表:

模式 描述r 以读方式打开文件,可读取文件信息。w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建r+ 以读写方式打开文件,可对文件进行读和写操作。w+ 消除文件内容,然后以读写方式打开文件。a+ 以读写方式打开文件,并把文件指针移到文件尾。b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

从表中不难看出,不同模式下打开文件,可以进行相关的读写。那么,如果什么模式都不写,像前面那样呢?那样就是默认为r模式,只读的方式打开文件。

>>> f = open("130.txt")

>>> f

>>> f = open("130.txt","r")

>>> f

可以用这种方式查看当前打开的文件是采用什么模式的,上面显示,两种模式是一样的效果。下面逐个对各种模式进行解释

"w":以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容

131.txt这个文件是存在的,前面建立的,并且在里面写了一句话:This is a file

>>> fp = open("131.txt")

>>> for line in fp: #原来这个文件里面的内容

... print line

...

This is a file

>>> fp = open("131.txt","w") #这时候再看看这个文件,里面还有什么呢?是不是空了呢?

>>> fp.write("My name is qiwsir.\nMy website is qiwsir.github.io") #再查看内容

>>> fp.close()

查看文件内容:

$ cat 131.txt #cat是linux下显示文件内容的命令,这里就是要显示131.txt内容

My name is qiwsir.

My website is qiwsir.github.io

"a":以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建

>>> fp = open("131.txt","a")

>>> fp.write("\nAha,I like program\n") #向文件中追加

>>> fp.close() #这是关闭文件,一定要养成一个习惯,写完内容之后就关闭

查看文件内容:

$ cat 131.txt

My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

其它项目就不一一讲述了。看官可以自己实验。

本讲先到这里,明天继续文件。感冒药吃了,昏昏欲睡。

python头文件库_跟老齐学Python之不要红头文件(1)相关推荐

  1. python实验室怎么样_跟老齐学Python之一个免费的实验室

    在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西.上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师--高老师,让我在他的实验室里面,把所有已 ...

  2. 跟老齐学python轻松入门_跟老齐学Python 轻松入门 中文pdf_Python教程

    资源名称:跟老齐学Python 轻松入门 中文pdf 第0章 预备 1第1章 基本对象类型 13第2章 语句和文件 100第3章 函数 145第4章 类 181第5章 错误和异常 233第6章 模块 ...

  3. python计算学习_跟老齐学Python之用Python计算

    一提到计算机,当然现在更多人把她叫做电脑,这两个词都是指computer.不管什么,只要提到她,普遍都会想到她能够比较快地做加减乘除,甚至乘方开方等.乃至于,有的人在口语中区分不开计算机和计算器. 那 ...

  4. python除法编程_跟老齐学Python之啰嗦的除法

    除法啰嗦的,不仅是python. 整数除以整数 看官请在启动idle之后,练习下面的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> ...

  5. 跟老齐学python轻松入门_跟老齐学Python:轻松入门

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  6. python精通 epub_《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3

    内容简介 <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流 ...

  7. 跟老齐学python轻松入门pdf_跟老齐学Python:轻松入门pdf

    下载地址:网盘下载 内容简介 · · · · · · <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻 ...

  8. python的for语句是否只有一种写法_跟老齐学Python之for循环语句

    废话少说,上干活. for的基本操作 for是用来循环的,是从某个对象那里依次将元素读取出来.看下面的例子,将已经学习过的数据对象用for循环一下,看看哪些能够使用,哪些不能使用.同时也是复习一下过往 ...

  9. python如何自学模块_跟老齐学Python之Import 模块

    认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...

最新文章

  1. python中数据分析的流程为-在数据分析流程中整合Python和R(一)
  2. 获取socket对应的接收缓冲区中的可读数据量
  3. .net中的压力测试
  4. 改进的有效边表算法_优硕微展 | 张和慧:基于邻域保持嵌入算法的间歇过程故障检测研究...
  5. LINUX 循环fork()
  6. UIImagePickerController PAD /IPHONE 上注意事项
  7. Qt与VS2005/2008的完美配合(转)
  8. (转)Spring整合Jpa
  9. cf两边黑屏怎么解决win10_红警49期:win10玩红警2黑屏但有声音怎么办
  10. 阿里云DataV数据过滤器取Value值大于等于25的数据(1)
  11. 论文页码不连续?经常改不对?教你一招立马解决
  12. 多线程如何等待所有子线程一起完成任务后再执行主线程
  13. Call to a member function validate() on null
  14. Linux应急响应排查
  15. MySQL 冷备份操作 + shell 脚本自动备份
  16. Python生成图片到visio的矢量图
  17. 计算机按键的功能介绍时间,计算器的日期键是什么
  18. 奔腾g2030主机安装黑群晖DSM6.1.7
  19. Hystrix 1.5 滑动窗口实现原理总结
  20. JS将十进制转换为二进制、十六进制、八进制,任意进制

热门文章

  1. 戴毅茹同济matlab,Stateflow系统建模(全)解读.pptx
  2. 解决maven项目没有Maven Dependencies
  3. java 判断date为空_java – 如何检查JSONArray元素是否为空
  4. Java对象内存布局
  5. sql server mysql 同步_SQL Server 用链接server 同步MySQL
  6. android源码使用方法,android源码中使用到的设计模式(创建型)
  7. 6 获取当前模块_python常用模块的常用方法介绍
  8. java 中的 什么意思啊_JAVA 中的 - 是什么意思?
  9. Android WebView的Js对象注入漏洞解决方案
  10. mysql的压缩包安装_mysql 5.7.24 压缩包安装配置方法图文教程