Python文件对象

明确文件系统:

  • 获取文件对象:

var_name = open(file_name[mode,[bufsize]])

缓冲:

0:禁用

1:使用缓冲,只缓冲一行数据

2+:指定缓存空间大小

负数:使用系统默认缓冲区

  •  文件对象的内置方法、函数、属相

next

In [10]: f1 = open('/etc/passwd','r')
In [11]: type(f1)
Out[11]: file
In [12]: f1.next()
Out[12]: 'root:x:0:0:root:/root:/bin/bash\n'
In [13]: f1.next()
Out[13]: 'bin:x:1:1:bin:/bin:/sbin/nologin\n'
In [14]: f1.next()
Out[14]: 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n'

close

In [35]: f1.close()

fileno 返回文件描述符

In [38]: f1 = open('/etc/passwd','r')
In [39]: f1.fileno()
Out[39]: 8

readline,readlines

返回字符串对象

In [40]: f1.readline()
Out[40]: 'root:x:0:0:root:/root:/bin/bash\n'
返回文件所有行为列表对象:
In [41]: f1.readlines()
Out[41]:
['bin:x:1:1:bin:/bin:/sbin/nologin\n',
'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n',
'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n',
'nobody:x:99:99:Nobody:/:/sbin/nologin\n']

tell:游标在文件中的位置,字节

In [47]: f1.tell()
Out[47]: 951

file.seek(offset[whence])

       whence:起点

                  0:从文件头偏移,默认

1:从当前位置偏移

2:从文件尾部偏移

In [48]: f1.tell()
Out[48]: 951
In [49]: f1.seek(0)
In [50]: f1.tell()
Out[50]: 0
file.read([size])

file.read([size])  读取多少个字节

In [51]: f1.read(10)
Out[51]: 'root:x:0:0'
此时在readline,或next读取的是位置到行尾
In [52]: f1.readline()
Out[52]: ':root:/root:/bin/bash\n'

file.write打开文件保存数据

In [61]: cp /etc/passwd .
In [62]: ls
passwd
In [64]: f1 = open('passwd','r+')
In [65]: f1.next()
Out[65]: 'root:x:0:0:root:/root:/bin/bash\n'
I [66]: f1.seek(0,2)
In [67]: f1.tell()
Out[67]: 951
In [68]: f1.write('new line.\n')
In [69]: f1.tell()
Out[69]: 961
In [70]: cat passwd
root:x:0:0:root:/root:/bin/bash
mysql:x:306:306::/home/mysql:/bin/bash
new line.
In [71]: f1.close()
In [72]: f2 = open('new_file','w+')
In [73]: f2.write('Python')
In [74]: f2.close()
In [75]: cat new_file
Python
读模式打开不存在文件,报IOError
In [76]: f3 = open('new_file2','r+')
---------------------------------------------------------------------------
IOError Traceback (most recent call last)
<ipython-input-76-1d0d8a99b4f2> in <module>()
----> 1 f3 = open('new_file2','r+')
IOError: [Errno 2] No such file or directory: 'new_file2'
In [77]: f3 = open('new_file2','a')
In [78]: ls
new_file new_file2 passwd

writelines(...)

writelines(sequence_of_strings) -> None.  Write the strings to the file.

Note that newlines are not added.  The sequence can be any iterable object

producing strings. This is equivalent to calling write() for each string

In [13]: f4 = open('new_file4','w+')

In [14]: import os

In [15]: l4 = os.listdir(‘/etc’)

返回列表对象:

In [19]: f4.writelines(l4)

In [20]: f4.flush()

可以看到,writelines把列表中多有对象当成一个字符串写入文件,没有换行

下面进行手动换行:

重新生成列表,添加换行符:

In [23]: l4 = [i+'\n' for i in os.listdir('/etc')]

In [25]: f4 = open('new_file4','w+')

In [26]: f4.writelines(l4)

In [27]: f4.flush()

In [28]: f4.close()

isatty()判断是不是终端

In [52]: f3 = open('new_file3','r+')

In [53]: f3.isatty()

Out[53]: False

truncate(N)截取保留N个字节:

In [55]: f3.readline()
Out[55]: 'root:x:0:0:root:/root:/bin/bash\n'
In [56]: f3.readline()
Out[56]: 'bin:x:1:1:bin:/bin:/sbin/nologin\n'
In [57]: f3.readline()
Out[57]: 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n'
截取保留当前游标位置及之前字节数
In [58]: f3.truncate(f3.tell())
In [59]: f3.flush()
In [60]: f3.seek(0)
In [61]: f3.readlines()
Out[61]:
['root:x:0:0:root:/root:/bin/bash\n',
'bin:x:1:1:bin:/bin:/sbin/nologin\n',
'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n']

closed 属性,判断文件打开状态

In [62]: f4.closed

Out[62]: False

file.name属性

In [53]: f1.name

Out[53]: '/etc/passwd'

mode文件打开模式,另外还有encoding、softspace等。

           file.close      file.flush      file.next       file.seek       file.writelines
file.closed file.isatty file.read file.softspace file.xreadlines
file.encoding file.mode file.readinto file.tell
file.errors file.name file.readline file.truncate
file.fileno file.newlines file.readlines file.write
  • 练习

1、1-10的平方写进文件new_file3,一次写一个对象

2、上面writelines方法,写入/etc下所有文件名到文件。

In [7]: f3 = open('new_file3','w+')
In [8]: for line in (i**2 for i in range(1,11)):
...: f3.write(str(line)+'\n')
...:
In [9]: f3.flush()
In [10]: f3.close()
In [11]: cat new_file3
1
4
9
16
25
36
49
64
81
100

Python(六)之文件对象的更多相关文章

  1. 【Python】写入文件

    1.1写入空文件 若将文本写入文件,在调用open()时候需要提供另外一个实参,告诉Python你要写入打开的文件 file_path = 'txt\MyFavoriteFruit.txt' with ...

  2. 十:python 对象类型详解六:文件

    一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...

  3. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  4. Python自动化运维之4、格式化输出、文件对象

    Python格式化输出: Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[P ...

  5. Python 文件对象

    Python 文件对象 1) 内置函数 open() 用于打开和创建文件对象 open(name,[,mode[,bufsize]]) 文件名.模式.缓冲区参数 mode: r 只读 w 写入 a 附 ...

  6. Python StringIO与BytesIO、类文件对象

    StringIO与BytesIO StringIO与BytesIO.类文件对象的用途,应用场景,优.缺点. StringIO StringIO 是io 模块中的类,在内存中开辟的一个文本模式的buff ...

  7. Python Cookbook(第3版)中文版:15.19 从C语言中读取类文件对象

    15.19 从C语言中读取类文件对象¶ 问题¶ 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案¶ 要读取一个类文件对象的数据,你需要重复调 ...

  8. Python学习笔记 -- 第六章 文件操作

    I/O编程 在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这 ...

  9. python 将文件描述符包装成文件对象

    有一个对应于操作系统上一个已打开的I/O 通道(比如文件.管道.套接字等)的整型文件描述符,你想将它包装成一个更高层的Python 文件对象. 一个文件描述符和一个打开的普通文件是不一样的.文件描述符 ...

随机推荐

  1. Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同

    Windows环境从Apache2.2改成Apache2.4后httpd.conf中的设置异同. 1.权限设定方式变更 2.2使用Order Deny / Allow的方式,2.4改用Require ...

  2. IT编年史 技术生命周期起步,成长,成熟和衰退四个阶段 IT历史总结

    IT编年史 最近查看了大量的正史或者野史,体会了整个IT夜发展的风气云涌,颇为激动,撰写如下. 感谢google黑板报的浪潮之巅http://googlechinablog.com/2007/07/a ...

  3. 六款值得推荐的Android开源框架简介

    技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的. 1.volley 项目地址 https://github.com/smanik ...

  4. [转]在Linux CentOS 6.6上安装Python 2.7.9

    在Linux CentOS 6.6上安装Python 2.7.9 查看python安装版本 python -V yum中最新的也是Python 2.6.6,所以只能下载Python 2.7.9的源代码 ...

  5. mysql数据库优化 pt-query-digest使用

    mysql数据库优化 pt-query-digest使用 一.pt-query-digest工具简介 pt-query-digest是用于分析 mysql慢查询的一个工具,它可以分析binlog.Ge ...

  6. NoSQL 非关系数据库

    NoSQL 数据库的学习 Redis的Windows版本安装 待整理 redis 安装 关于分布式的网站介绍 NOSQL 几个网页 认识MongoDB Mongodb实现副本集和Mongodb副本集的 ...

  7. You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgrou

    最近有个同事问我,他工程运行时就会有如下提示,但是不影响功能:You've implemented -[<UIApplicationDelegate> application:didRec ...

  8. java php 等,路径 上级路径,上上级路径表示方法

    如何表示上级目录 ../表示源文件所在目录的上一级目录,../../表示源文件所在目录的上上级目录,以此类推. ../表示源文件所在目录的上一级目录,../../表示源文件所在目录的上上级目录,以此类 ...

  9. 温故而知新 监听 XMLHttpRequest 发起请求

    window.XMLHttpRequest.prototype.open 可以监听 XMLHttpRequest .但不能监听fetch请求. <!DOCTYPE html> <ht ...

  10. processing fill()和stroke()函数

    在procesiing有两个基本的函数,fill()和stroke()函数,这两个函数分别用来控制形状填充颜色和形状轮廓的颜色,fill()和stroke()可以接受的参数的个数为1,2,3.当参数的 ...