跟老齐学Python之不要红头文件(2)

文件的属性

所谓属性,就是能够通过一个文件对象得到的东西。

复制代码 代码如下:
>>> f = open(“131.txt”,”a”)
>>> f.name
‘131.txt’
>>> f.mode      #显示当前文件打开的模式
‘a’
>>> f.closed    #文件是否关闭,如果关闭,返回True;如果打开,返回False
False
>>> f.close()   #关闭文件的内置函数
>>> f.closed
True

文件的有关状态

很多时候,我们需要获取一个文件的有关状态(有时候成为属性,但是这里的文件属性和上面的文件属性是不一样的,可是,我觉得称之为文件状态更好一点),比如创建日期,访问日期,修改日期,大小,等等。在os模块中,有这样一个方法,能够解决此问题:

立即学习“Python免费学习笔记(深入)”;

复制代码 代码如下:
>>> import os
>>> file_stat = os.stat(“131.txt”)      #查看这个文件的状态
>>> file_stat                           #文件状态是这样的。从下面的内容,有不少从英文单词中可以猜测出来。
posix.stat_result(st_mode=33204, st_ino=5772566L, st_dev=2049L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=69L, st_atime=1407897031, st_mtime=1407734600, st_ctime=1407734600)

>>> file_stat.st_ctime                  #这个是文件创建时间
1407734600.0882277                      #换一种方式查看这个时间
>>> import time                        
>>> time.localtime(file_stat.st_ctime)  #这回看清楚了。
time.struct_time(tm_year=2014, tm_mon=8, tm_mday=11, tm_hour=13, tm_min=23, tm_sec=20, tm_wday=0, tm_yday=223, tm_isdst=0)

以上关于文件状态和文件属性的内容,在对文件的某些方面进行判断和操作的时候或许会用到。特别是文件属性。比如在操作文件的时候,我们经常要首先判断这个文件是否已经关闭或者打开,就需要用到file.closed这个属性来判断了。

文件的内置函数

复制代码 代码如下:
>>> 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’]
>>>

这么多内置函数,不会都讲述,只能捡着重点的来实验了。

复制代码 代码如下:
>>> f = open(“131.txt”,”r”)
>>> f.read()
‘My name is qiwsir.My website is qiwsir.github.ioAha,I like program’
>>>

file.read()能够将文件中的内容全部读取过来。特别注意,这是返回一个字符串,而且是将文件中的内容全部读到内存中。试想,如果内容太多是不是就有点惨了呢?的确是,千万不要去读大个的文件。

复制代码 代码如下:
>>> contant = f.read()
>>> type(contant)

如果文件比较大了,就不要一次都读过来,可以转而一行一行地,用readline

复制代码 代码如下:
>>> f = open(“131.txt”,”r”)
>>> f.readline()        #每次返回一行,然后指针向下移动
‘My name is qiwsir.’
>>> f.readline()        #再读,再返回一行
‘My website is qiwsir.github.io’
>>> f.readline()
‘Aha,I like program’
>>> f.readline()        #已经到最后一行了,再读,不报错,返回空

这个方法,看官是不是觉得太慢了呢?有没有痛快点的呢?有,请挥刀自宫,不用自宫,也能用readlines。注意区别,这个是复数,言外之意就是多行啦。

复制代码 代码如下:
>>> f = open(“131.txt”,”r”)
>>> cont = f.readlines()
>>> cont
[‘My name is qiwsir.’, ‘My website is qiwsir.github.io’, ‘Aha,I like program’]
>>> type(cont)

>>> for line in cont:
…     print line

My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

从实验中我们可以看到,readlines和read有一样之处,都是将文件内容一次性读出来,存放在内存,但是两者也有区别,read返回的是str类型,readlines返回的是list,而且一行一个元素,因此,就可以通过for逐行打印出来了。

在print line中,注意观察list里面的每个元素,最后都是一个结尾,所以打印的结果会有空行。其原因前面已经介绍过了,忘了的朋友请回滚到上一讲

不过,还是要提醒列位,太大的文件不用都读到内存中。对付大点的文件,还是推荐这么做:

复制代码 代码如下:
>>> f = open(“131.txt”,”r”)
>>> f

>>> type(f)

>>> for line in f:
…     print line

My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

以上都是读文件的内置函数和方法。除了读,就是要写。所谓写,就是将内容存入到文件中。用到的内置函数是write。但是,要写入文件,还要注意打开文件的模式,可以是w,也可以是a,看具体情况而定。

复制代码 代码如下:
>>> f = open(“131.txt”,”a”)     #因为这个文件已经存在,我又不想清空,用追加的模式
>>> f.write(“There is a baby.”) #这句话应该放到文件最后
>>> f.close()                   #请看官注意,写了之后,一定要及时关闭文件。才能代表真正写入

看看写的效果:

复制代码 代码如下:
>>> f = open(“131.txt”,”r”)
>>> for line in f.readlines():
…     print line

My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

There is a baby.        #果然增加了这一行

以上是关于文件的基本操作。其实对文件远远不知这些,有兴趣的看官可以google一下pickle这个模块,是一个很好用的东西。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2291318.html

(0)
上一篇 2025年2月28日 00:56:06
下一篇 2025年2月26日 20:06:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 跟老齐学Python之有容乃大的list(4)

    list的话题的确不少,而且,在编程中,用途也非常多。 有看官可能要问了,如果要生成一个list,除了要把元素一个一个写上之外,有没有能够让计算机自己按照某个规律生成list的方法呢? 如果你提出了这个问题,充分说明你是一个“懒人”,不过这…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之做一个小游戏

    在讲述有关list的时候,提到做游戏的事情,后来这个事情一直没有接续。不是忘记了,是在想在哪个阶段做最合适。经过一段时间学习,看官已经不是纯粹小白了,已经属于python初级者了。现在就是开始做那个游戏的时候了。 游戏内容:猜数字游戏 太简…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之坑爹的字符编码

    字符编码,在编程中,是一个让学习者比较郁闷的东西,比如一个str,如果都是英文,好说多了。但恰恰不是如此,中文是我们不得不用的。所以,哪怕是初学者,都要了解并能够解决字符编码问题。 >>> name = ‘老齐’>&…

    2025年2月28日
    200
  • 跟老齐学Python之数据类型总结

    下面的表格中列出了已经学习过的数据类型,也是python的核心数据类型之一部分,这些都被称之为内置对象。 对象,就是你面对的所有东西都是对象,看官要逐渐熟悉这个称呼。所有的数据类型,就是一种对象。英文单词是object,直接的汉语意思是物体…

    编程技术 2025年2月28日
    100
  • 跟老齐学Python之字典,你还记得吗?

    字典,这个东西你现在还用吗?随着网络的发展,用的人越来越少了。不少人习惯于在网上搜索,不仅有web版,乃至于已经有手机版的各种字典了。我曾经用过一本小小的《新华字典》。 《新华字典》是中国第一部现代汉语字典。最早的名字叫《伍记小字典》,但未…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之list和str比较

    相同点 都属于序列类型的数据 所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做“偏移量”的方式得到,而要想一次得到多个元素,可以使用切片。偏移量从0开始,总元素数减1结束。 例如: >>> welc…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之有容乃大的list(2)

    对list的操作 合并list 《有容乃大的list(1)》中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边。 除了将元素追加到list中,还能够将两个list合并,或者说将一个lis…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之眼花缭乱的运算符

    在计算机高级中语言,运算符是比较多样化的。其实,也都源于我们日常的需要。 算术运算符 前面已经讲过了四则运算,其中涉及到一些运算符:加减乘除,对应的符号分别是:+ – * /,此外,还有求余数的:%。这些都是算术运算符。其实,算…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之玩转字符串(3)

    字符串就是一个话题中心。 给字符串编号 在很多很多情况下,我们都要对字符串中的每个字符进行操作(具体看后面的内容),要准确进行操作,必须做的一个工作就是把字符进行编号。比如一个班里面有50名学生,如果这些学生都有学号,老师操作他们将简化很多…

    编程技术 2025年2月28日
    200
  • 跟老齐学Python之玩转字符串(2)

    上一章中已经讲到连接两个字符串的一种方法。复习一下: >>> a= ‘py’>>> b= ‘thon’>>> a+b’python’ 登录后复制 既然这是一种方法,言外之意,还有另外一种…

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论