python 文件file操作(2)
文件的属性
所谓属性,就是能够通过一个文件对象得到的东西。
>>> f = open("m1.txt","a") >>> f.name 'm1.txt' >>> f.mode #显示当前文件打开的模式 'a' >>> f.closed #文件是否关闭,如果关闭,返回True;如果打开,返回False False >>> f.close() #关闭文件的内置函数 >>> f.closed True
文件的有关状态
>>> import os >>> file_stat = os.stat("m1.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("m1.txt","r") >>> f.read() 'My name is hiekay.\nMy website is hiekay.github.io\nAha,I like program\n' >>>
file.read()能够将文件中的内容全部读取过来。特别注意,这是返回一个字符串,而且是将文件中的内容全部读到内存中。试想,如果内容太多是不是就有点惨了呢?的确是,千万不要去读大个的文件。
>>> contant = f.read() >>> type(contant) <type 'str'>
如果文件比较大了,就不要一次都读过来,可以转而一行一行地,用readline
>>> f = open("m1.txt","r") >>> f.readline() #每次返回一行,然后指针向下移动 'My name is hiekay.\n' >>> f.readline() #再读,再返回一行 'My website is hiekay.github.io\n' >>> f.readline() 'Aha,I like program\n' >>> f.readline() #已经到最后一行了,再读,不报错,返回空 ''
读多行,readlines()
>>> f = open("m1.txt","r") >>> cont = f.readlines() >>> cont ['My name is hiekay.\n', 'My website is hiekay.github.io\n', 'Aha,I like program\n'] >>> type(cont) <type 'list'> >>> for line in cont: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program
从实验中我们可以看到,readlines和read有一样之处,都是将文件内容一次性读出来,存放在内存,但是两者也有区别,read返回的是str类型,readlines返回的是list,而且一行一个元素,因此,就可以通过for逐行打印出来了。
在print line中,注意观察list里面的每个元素,最后都是一个\n结尾,所以打印的结果会有空行。
对付大点的文件,推荐这么做:
>>> f = open("m1.txt","r") >>> f <open file 'm1.txt', mode 'r' at 0xb757c230> >>> type(f) <type 'file'> >>> for line in f: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program
以上都是读文件的内置函数和方法。除了读,就是要写。所谓写,就是将内容存入到文件中。用到的内置函数是write。但是,要写入文件,还要注意打开文件的模式,可以是w,也可以是a,看具体情况而定。
>>> f = open("m1.txt","a") #因为这个文件已经存在,我又不想清空,用追加的模式 >>> f.write("There is a baby.") #这句话应该放到文件最后 >>> f.close() #请看官注意,写了之后,一定要及时关闭文件。才能代表真正写入
看看写的效果:
>>> f = open("m1.txt","r") >>> for line in f.readlines(): ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program There is a baby. #果然增加了这一行
以上是关于文件的基本操作。高级 : pickle这个模块,是一个很好用的东西。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实战|基于TensorFlow+Python的文本分类全程详解
本教程将会建立一个神经网络模型,通过分析影评文本将影评分为正面或负面。这是一个典型的二分类问题,是一种重要且广泛适用的机器学习问题。 我们将使用包含50,000条电影评论文本的IMDB(互联网电影数据库)数据集,并将其分为训练集(含25,000条影评)和测试集(含25,000条影评)。训练集和测试集是平衡的,也即两者的正面评论和负面评论的总数量相同。 本教程将会使用tf.keras(一个高级API),用于在TensorFlow中构建和训练模型。如果你想了解利用tf.keras进行更高级的文本分类的教程,请参阅MLCC文本分类指南。你可以使用以下python代码导入Keras: import tensorflow as tf from tensorflow import keras import numpy as np print(tf.__version__) 输出: 1.11.0 下载IMDB数据集 IMDB数据集已经集成于TensorFlow中。它已经被预处理,评论(单词序列)已经被转换为整数序列,整数序列中每个整数表示字典中的特定单词。 您可以使用以下代码下载IMDB数据集(如果...
- 下一篇
你所遗漏的SpringBoot日志管理知识
Spring Boot对所有内部日志记录使用了Commons Logging,但是底层日志实现是开放的。可以为 Java Util日志、Log4J2和Logback。对于每种日志都预先配置为使用控制台输出和可选的文件输出。默认为Logback 日志配置 通过将相应的库添加到classpath可以激活各种日志系统,然后在classpath根目录下提供合适的配置文件可以进一步定制日志系统,配置文件也可以通过Spring Environment的logging.config属性指定。 以下文件会根据你选择的日志系统进行加载: 日志系统 定制配置 Logback logback-spring.xml,logback-spring.groovy,logback.xml或logback.groovy Log4j log4j.properties或log4j.xml Log4j2 log4j2-spring.xml或log4j2.xml JDK (Java Util Logging) logging.properties 注 如果可能的话,建议你使用-spring变种形式定义日志配置(例如,使用lo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题