open()函数文件操作
open函数,该函数用于文件处理
操作文件时,一般需要经历如下步骤:
(1)打开文件
(2)操作文件
一、打开文件
文件句柄 = open("文件路径","模式")
打开文件是,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
(1)r,只读模式【默认】
(2)w,只写模式【不可读;不存在则创建;存在则清空内容】
(3)x,只写模式【不可读;不存在则创建;存在则报错】
(4)a,追加模式【可读;不存在则创建;存在则只追加内容】
下面是一个简单的例子,判断"w"模式下的文件是否可读,因为以前一致没有注意,不知道"w"模式下文件不可读。实例如下:
with open("test.log","w") as f:
f.write("123\n")
f.write("I love python\n")
f.write("I must to work hard\n")
f.write("I must to write string in the file\n")
#判断文件是否可读readable()
ret = f.readable()
print(ret)
运行如下:
False
首先,我们用"w"只写模式打开文件,并向文件中添加内容,然后使用readable()判断文件是否可读,结果返回False,说明文件是不可读的。
"+"表示可以同时读写某个文件
(1)r+,读写【可读,可写】
(2)w+,写读【可读,可写】
(3) x+,写读【可读,可写】
(4)a+,写读【可读,可写】
"U"表示在读取时,可以将\r \n \r\n自动转化成(与r或r+模式同时使用)
(1)U
(2)r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
(1)rb或r+b
(2)wb或w+b
(3)xb或x+b
(4)ab或a+b
二、操作文件
(1)def close(self):
# real signature unknown; restored from __doc__
关闭文件
"""
(2)def fileno(self):
# real signature unknown; restored from __doc__
文件描述符
"""
(3)def flush(self):
# real signature unknown; restored from __doc__
刷新文件内部缓冲区
"""
flush() -> None. Flush the internal I/O buffer. """ pass
(4)def isatty(self):
# real signature unknown; restored from __doc__
判断文件是否是同意tty设备
"""
isatty() -> true or false. True if the file is connected to a tty device.
"""
return False
(5)def next(self)
# real signature unknown; restored from __doc__
取下一行数据,不存在,则报错
""" x.next() -> the next value, or raise StopIteration """
pass
(6)def read(self, size=None):
# real signature unknown; restored from __doc__
读取指定字节数据
"""
read()是读取文件,可以指定读取文件中字符串多少个字节,read(self,size=None)默认是全部读取,在Python3中是按照字符来读取的。读取文件。
with open("test.log","r") as f:
ret = f.read(3) print(ret)
运行如下:
我是你
上述代码我们以只读模式打开文件,并且读取文件中3个字符长度。
(7)def readline(self, size=None):
# real signature unknown; restored from __doc__
仅读取一行数据
"""
readlin(self,size=None)仅读取一行,经常和readlines()混淆,原来readline()是仅读取一行,readlines()按照换行符读取到一个列表中。示例如
下: with open("test.log","r") as f:
ret = f.readline()
res = f.readline() print(ret)
print(res)
运行结果如下:
在Python中只能写入字符串
我喜
上面代码可以看出,readline()读取了文件的第一行,并且readline(self,size)可以指定读取第一行的字符个数;并且如果第一行读取完成之后,是
不能同时进行读取的,就会读取第二行的内容。
(8)readable(self,*args,**kwargs)
readable(self,*args,**kwargs)是判断文件是否可读,如果可以读取就返回布尔值True;否则返回波尔值False.
(9)def seek(self, offset, whence=None)
# real signature unknown; restored from __doc__
指定文件中指针位置
"""
seek(self,offset,whence=None)指定文件指针的位置,指定从哪里进行读取,实例如下:
with open("test.log","r") as f:
#print(f.tell())
#插入指针的位置
f.seek()
#read()是按照字符来读取的
ret = f.read()
#tell是按照字节来读取的,汉字有3个字节,两个汉字有6个字节
print(f.tell())
#tell用来查看当前指针位置
#seek指定当前指针位置
print(ret)
seek(self,offset,whence=None)是指定文件从那里开始读取,以字节的方式。
tell(self)用来查看当前文件的指针,就是读取之后下一次从哪里开始读取。
10.def tell(self):
# real signature unknown; restored from __doc__
获取当前指针位置
""" tell() -> current file position, an integer (may be a long integer). """
pass
tell(self)是获取当前文件的指针位置。
11.def truncate(self, size=None):
# real signature unknown; restored from __doc__
截断数据,仅保留指定之前数据
"""
truncate([size]) -> None. Truncate the file to at most size bytes. Size defaults to the current file position, as returned by tell().
"""
pass
truncate(self,size=None)获取截断数据之前的数据。使用seek()截断数据,read()只读取截断文件之后的数据,之前的数据不管;而truncate()是读取
截断之前的数据。示例如下:
with open("test.log","r+") as f:
#print(f.tell())
#插入指针的位置
f.seek()
#读取截断之后的文件内容
#ret = f.read()
#读取截断文件之前的文件内容
res = f.truncate()
#print(ret)
print(res)
truncate(self,size=None)是截取文件指针之前的内容,并把指针后面的文件删除,只保留指针之前的文件信息。
12.def seekable(self, *args, **kwargs):
# real signature unknown
指针是否可操作
pass
13. def writable(self, *args, **kwargs):
# real signature unknown
是否可写
pass
14.def write(self, *args, **kwargs):
# real signature unknown
写内容
pass
15.def writelines(self, sequence_of_strings):
# real signature unknown; restored from __doc__
将一个字符串列表写入文件,示例如下:
with open("test.log","w") as f:
li = ["I love you.\n", "I need to work hard to do someing.\n", "In the Python,you can't to write int in the file"]
f.writelines(li)
上述代码中,我们把一个字符串列表写入了文件中。readlines(self,sequence_of_strings)以字符串列表的形式向文件中写入内容。
16. def readlines(self, size=None):
# real signature unknown; restored from __doc__
读取所有数据,并根据换行保存值列表
"""
readlines(self,size=None)读取文件所有数据,并且以换行符的形式存储在一个列表中,与writelines()类似,实例如下: with open("test.log","r") as f:
ret = f.readlines() print(ret)
运行结果如下:
['I love you.\n', 'I need to work hard to do someing.\n', "In the Python,you can't to write int in the file"]
with open("test.log","r") as f:
ret = f.readline()
res = f.readline() print(ret)
print(res)
open()函数文件操作的更多相关文章
- python基础(内置函数+文件操作+lambda)
一.内置函数 注:查看详细猛击这里 常用内置函数代码说明: # abs绝对值 # i = abs(-123) # print(i) #返回123,绝对值 # #all,循环参数,如果每个元素为真,那么 ...
- Python全栈之路4--内置函数--文件操作
上节重点回顾: 判断对象是否属于某个类,例如: 列表中有个数字,但是循环列表判断长度,用len会报错;因为int不支持len,所以要先判断属于某个类,然后再进行if判断. # isinstance(对 ...
- 第三天 函数 三元运算 lambda表达式 内置函数 文件操作
面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...
- python自动化开发-[第三天]-编码,函数,文件操作
今日概要 - 编码详解 - 文件操作 - 初识函数 一.字符编码 1.代码执行过程 代码-->解释器翻译-->机器码-->执行 2.ASCII ASCII:一个Bytes代表一个字符 ...
- python匿名函数 高阶函数 内置函数 文件操作
1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...
- python-内置函数-文件操作
文件操作 用的最多的就是r+,w+和a+都有局限性 w+是先清空,然后再写,之后再读 a+是无论如何调整指针位置,写时都在文件最后追加 而r+可以通过调整指针位置来确定写入的位置 文件操作之with处 ...
- PHP文件相关的操作函数——文件操作
1.文件的代开与关闭 1.1 fopen() 作用:该函数用于打开一个文件 具体使用访问:http://www.w3school.com.cn/php/func_filesystem_fopen.as ...
- day4函数文件操作
一.高效读取文件 1.使用with打开文件,程序运行完后会自动关闭打开的文件 2.修改文件,将文件中的123替换为a(简单粗暴方式) 3.打开两个文件,修改后将旧文件删除,将新文件名字改成旧文件的名称 ...
- 第3章 Python基础-文件操作&函数 文件操作 练习题
一.利用b模式,编写一个cp工具,要求如下: 1. 既可以拷贝文本又可以拷贝视频,图片等文件 2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target ...
随机推荐
- 【DP】【CF31E】 TV Game
传送门 Description 给你一个长度为\(2n\)的数字,每次可以从左侧选一个数字,加入连接到一个数字\(A\)或另一个数字\(B\)后面.\(A,B\)初始为\(0\).\(A\)与\(B\ ...
- Myeclipse下配置SVN报错问题 svn: E175002: java.lang.RuntimeException: Could not generate DH keypair,缺少subclipse插件的javaHL
在myeclipse10.0下安装svn插件,出现了Could not generate DH keypair,这么一个错误. 看到了一篇博客说是svn接口选择问题,可是我myeclipse没有那个接 ...
- POJ--2752
原题链接:http://poj.org/problem?id=2752 分析:no! #include<cstdio> #include<cstring> #include&l ...
- NYOJ--139
原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=139 分析:cantor展开,康托展开用于计算一个排列的序数.公式为: X=a[n]*n! ...
- laravel5.5 不能正常自动回复的问题
虽然开启了APP_DEBUG 但是 log 却没有记录任何错误信息,后来经过测试发现原来是路由问题,因为微信服务器发送消息是使用 post 方法,但是我的路由定义只定义了 get (tp 用多了习惯了 ...
- LuaJavaBridge - lua与java互操作的简单解决方案
引入:Android平台代码和Lua代码的交互均通过C++和Java交互,Lua再和C++交互(lua <==> C++ <==> java) 我最开始遇见这种lua调用ja ...
- 问题分析 - 电容的ESR
ESR,是Equivalent Series Resistance三个单词的缩写,翻译过来就是“等效串连电阻” 理论上,一个完美的电容,自身不会产生任何能量损失,但是实际上,因为制造电容的材料有电阻, ...
- linux 时间设置
自动校准 ntpdate -u cn.pool.ntp.org 时区 rm -f /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/ ...
- kendalltau肯德尔和谐系数
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- 779D. String Game 二分 水
Link 题意: 给出两字符串$a$,$b$及一个序列,要求从前往后按照序列删掉$a$上的字符,问最少删多少使$b$串不为a的子串 思路: 限制低,直接二分答案,即二分序列位置,不断check即可. ...