python3的文件操作
open的原型定义在bultin.py中,是一种内建函数,用于处理文件
- open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
- ========= ===============================================================
Character Meaning
--------- ---------------------------------------------------------------
'r' open for reading (default)只读
'w' open for writing, truncating the file first 清空内容之后写内容,并将内容按行截断
'x' create a new file and open it for writing 如果文件存在就报错,不存在就创建并写内容
'a' open for writing, appending to the end of the file if it exists 追加写内容
'b' binary mode 以字节模式打开,eg mode = 'rb' 以字节打开读取;如果没有写b,则以字符模式读取
't' text mode (default) 文本模式打开(默认方式)
'+' open a disk file for updating (reading and writing) 为了更新文件,以读写方式打开硬盘文件
'U' universal newline mode (deprecated) 全局新行模式(即将弃用)
========= ===============================================================
- def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open
- """
- Open file and return a stream. Raise IOError upon failure.
- file is either a text or byte string giving the name (and the path
- if the file isn't in the current working directory) of the file to
- be opened or an integer file descriptor of the file to be
- wrapped. (If a file descriptor is given, it is closed when the
- returned I/O object is closed, unless closefd is set to False.)
- mode is an optional string that specifies the mode in which the file
- is opened. It defaults to 'r' which means open for reading in text
- mode. Other common values are 'w' for writing (truncating the file if
- it already exists), 'x' for creating and writing to a new file, and
- 'a' for appending (which on some Unix systems, means that all writes
- append to the end of the file regardless of the current seek position).
- In text mode, if encoding is not specified the encoding used is platform
- dependent: locale.getpreferredencoding(False) is called to get the
- current locale encoding. (For reading and writing raw bytes use binary
- mode and leave encoding unspecified.) The available modes are:
- ========= ===============================================================
- Character Meaning
- --------- ---------------------------------------------------------------
- 'r' open for reading (default)
- 'w' open for writing, truncating the file first
- 'x' create a new file and open it for writing
- 'a' open for writing, appending to the end of the file if it exists
- 'b' binary mode
- 't' text mode (default)
- '+' open a disk file for updating (reading and writing)
- 'U' universal newline mode (deprecated)
- ========= ===============================================================
- The default mode is 'rt' (open for reading text). For binary random
- access, the mode 'w+b' opens and truncates the file to 0 bytes, while
- 'r+b' opens the file without truncation. The 'x' mode implies 'w' and
- raises an `FileExistsError` if the file already exists.
- Python distinguishes between files opened in binary and text modes,
- even when the underlying operating system doesn't. Files opened in
- binary mode (appending 'b' to the mode argument) return contents as
- bytes objects without any decoding. In text mode (the default, or when
- 't' is appended to the mode argument), the contents of the file are
- returned as strings, the bytes having been first decoded using a
- platform-dependent encoding or using the specified encoding if given.
- 'U' mode is deprecated and will raise an exception in future versions
- of Python. It has no effect in Python 3. Use newline to control
- universal newlines mode.
- buffering is an optional integer used to set the buffering policy.
- Pass 0 to switch buffering off (only allowed in binary mode), 1 to select
- line buffering (only usable in text mode), and an integer > 1 to indicate
- the size of a fixed-size chunk buffer. When no buffering argument is
- given, the default buffering policy works as follows:
- * Binary files are buffered in fixed-size chunks; the size of the buffer
- is chosen using a heuristic trying to determine the underlying device's
- "block size" and falling back on `io.DEFAULT_BUFFER_SIZE`.
- On many systems, the buffer will typically be 4096 or 8192 bytes long.
- * "Interactive" text files (files for which isatty() returns True)
- use line buffering. Other text files use the policy described above
- for binary files.
- encoding is the name of the encoding used to decode or encode the
- file. This should only be used in text mode. The default encoding is
- platform dependent, but any encoding supported by Python can be
- passed. See the codecs module for the list of supported encodings.
- errors is an optional string that specifies how encoding errors are to
- be handled---this argument should not be used in binary mode. Pass
- 'strict' to raise a ValueError exception if there is an encoding error
- (the default of None has the same effect), or pass 'ignore' to ignore
- errors. (Note that ignoring encoding errors can lead to data loss.)
- See the documentation for codecs.register or run 'help(codecs.Codec)'
- for a list of the permitted encoding error strings.
- newline controls how universal newlines works (it only applies to text
- mode). It can be None, '', '\n', '\r', and '\r\n'. It works as
- follows:
- * On input, if newline is None, universal newlines mode is
- enabled. Lines in the input can end in '\n', '\r', or '\r\n', and
- these are translated into '\n' before being returned to the
- caller. If it is '', universal newline mode is enabled, but line
- endings are returned to the caller untranslated. If it has any of
- the other legal values, input lines are only terminated by the given
- string, and the line ending is returned to the caller untranslated.
- * On output, if newline is None, any '\n' characters written are
- translated to the system default line separator, os.linesep. If
- newline is '' or '\n', no translation takes place. If newline is any
- of the other legal values, any '\n' characters written are translated
- to the given string.
- If closefd is False, the underlying file descriptor will be kept open
- when the file is closed. This does not work when a file name is given
- and must be True in that case.
- A custom opener can be used by passing a callable as *opener*. The
- underlying file descriptor for the file object is then obtained by
- calling *opener* with (*file*, *flags*). *opener* must return an open
- file descriptor (passing os.open as *opener* results in functionality
- similar to passing None).
- open() returns a file object whose type depends on the mode, and
- through which the standard file operations such as reading and writing
- are performed. When open() is used to open a file in a text mode ('w',
- 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open
- a file in a binary mode, the returned class varies: in read binary
- mode, it returns a BufferedReader; in write binary and append binary
- modes, it returns a BufferedWriter, and in read/write mode, it returns
- a BufferedRandom.
- It is also possible to use a string or bytearray as a file for both
- reading and writing. For strings StringIO can be used like a file
- opened in a text mode, and for bytes a BytesIO can be used like a file
- opened in a binary mode.
- """
- pass
在io.py中,可以看到对open函数的重构,源码中写的是io.py中的open函数是builtin.py中open函数的别名(alias)
- def open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None,
- closefd=True, opener=None):
- """This is an alias for the builtin open() function.
- :type file: string
- :type mode: string
- :type buffering: numbers.Integral
- :type encoding: string | None
- :type errors: string | None
- :type newline: string | None
- :type closefd: bool
- :type opener: ((string, int) -> int) | None
- :rtype: io.FileIO[bytes] | io.TextIOWrapper[unicode]
- """
- pass
接下来具体看io.py中的几个常用方法:
f.readline(self, limit=-1) 读一行,如果提供limit参数,则只能读一行中的一部分
f.readlines(self, hint=-1) 把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供hint参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
- def readline(self, limit=-1):
- """Read and return one line from the stream.
- :type limit: numbers.Integral
- :rtype: T
- """
- pass
- def readlines(self, hint=-1):
- """Read and return a list of lines from the stream.
- :type hint: numbers.Integral
- :rtype: list[T]
- """
- return []
f.write(self, b):
f.writelines(self, lines) 把seq的内容全部写到文件中(多行一次性写入)。忠实地写入,不会在每行后面加上任何东西。
Ref: http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html
未完待续
**************
1. 打开文件
f = open('db','r+',encoding = 'utf-8') #自动转换时用utf-8编码格式将字节转换成字符串
r+模式,可读可写,是最常用的模式
a+模式,可读可写,然而由于a是追加写,不管通过f.seek()将光标移到哪里,最终写的时候都会把光标移到文件末尾追加
w+模式,可读可写,然而在以w+模式打开文件的时候,就清空了原文件了,只是在清空之后是“可读可写”的
2. 操作文件
f.read(size) size为读取的长度,以byte为单位
f.tell() 获取当前光标的位置
f.seek() 移动光标到指定位置, eg. f.seek(f.tell()) 调整到当前光标所在的位置(字节)
f.write() 从当前光标位置开始向后覆盖
3. 关闭文件
f.close()
with open(file) as f: #结束时自动关闭文件
....
python3的文件操作的更多相关文章
- python3.7 文件操作
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 文件操作 # r 只读,默认打开方式,当文件不存在时会报错 # ...
- 【python3之文件操作】
一.文件操作 1.文件处理的流程 1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)关闭文件 例如: f = open('chenli.txt') #打开文件 first_l ...
- (17)-Python3之--文件操作
1.文件的操作流程 第一,建立文件对象. 第二,调用文件方法进行操作. 第三,不要忘了关闭文件.(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成 ...
- python3之文件操作
一 打开文件 根目录在d盘的文件名为‘学习资料.txt’的文件 a)绝对路径(最开始的,根目录文件)例: e:\学习资料.txt 相对路径 直接用文件名字 b)操作方式 只读 只 ...
- python3中文件操作及编码
#之前一直没明白文件处理中的w和wb的区别到底是什么,#在看过视频后才知道,原来在linux里面是没有区别的,#但是在windows里面就能够看出区别来了#下面来个例子: with open(&quo ...
- python3中文件/IO编程
python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件 f = open(&quo ...
- Python3学习之路~2.7 文件操作
对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 Somehow, it seems the love I knew was always the ...
- Python3 文件操作(十六)
一 文件操作 1.介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...
- Python3.x:open()文件操作
Python3.x:open()文件操作 open/文件操作: #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 f=ope ...
随机推荐
- PLSQL_性能优化系列12_Oracle Index Anaylsis索引分析
2014-10-04 Created By BaoXinjian
- OAF_架构MVC系列4 - Control的概述(概念)
2014-06-18 Created By BaoXinjian
- hadoop对于压缩文件的支持及算法优缺点
hadoop对于压缩文件的支持及算法优缺点 hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,hadoop能够自动为我们 将压缩的文件解压,而不用我们去关心. 如果 ...
- PHP每日签到时怎么实现
以淘宝网领取淘金币的签到系统为例:目标:第一天签到增加5个积分:第二天连续签到则增加8个积分:第三天连续签到,增加11个积分,第 四天连续签到,增加15个积分:第五天连续签到,增加19个积分:第六天连 ...
- Struts2 Annotation 注解配置
也叫Zero Configuration(零配置),它省去了写xml文件的麻烦,可以直接在类叫进行配置,不用在java文件和xml文件中来回切换. 必须导入struts2-convention-plu ...
- 玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015 z
http://bbs.msdn5.com/thread-27-1-1.html 本类库采用TcpLister,TcpClient高度封装, 采用NetworkStream进行异步模式读取数据. 采用S ...
- Access“存储过程"参数顺序要与执行代码生成的参数顺序一致
OleDbParameter olp; OleDbCommand cmd = new OleDbCommand("insertYjsData"); olp = new OleDbP ...
- 强大的JS数组
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- jstatd命令
jstatd [options] 此命令是一个RMI Server应用程序,提供了对JVM的创建和结束监视,也为远程监视工具提供了一个可以attach的接口options -nr 当一个存在的RMI ...
- 第4章 管道和FIFO
4.1 管道 管道是由pipe函数创建的,提供一个单向数据流. 头文件 #include <unistd.h> 函数原型 int pipe(int fd[2]); 返回值 成功则为0,出错 ...