open()函数

介绍

open()函数用于打开文件并创建文件对象。

open()函数的语法格式:

file = open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 创建的文件对象
  • filename: 要打开或创建的文件路径,需要加双引号或单引号。
  • mode: 可选项,指定文件打开模式。
字符 解释
r 读取(默认)。文件必须存在
b 二进制模式。rb则表示以二进制模式读取。
w 写入。如果该文件已存在则会删除原有内容重新编辑。
x 写入。如果该文件已存在则报错。
a 追加写入。如果该文件已存在,在末尾追加写入;如果文件不存在,创建新文件写入。
b 二进制模式
t 文本模式(默认)
+ 更新文件。可读可写。写入时,从文件开头覆盖原有内容
  • buffering: 可选整数,用于设置缓冲策略。0 关闭缓冲(只允许在二进制模式下), 1 表示表达式缓存(只在文本模式下可用),整数 > 1 表示固定大小的块缓冲区字节大小。负值为系统默认的寄存区缓冲大小。
  • encoding: 可选参数。文件编码方式,如"encoding="utf-8"。默认为GBK编码。

open()文件对象的方法

  • file.name: 返回文件名称
  • file.mode:返回文件打开模式
  • file.encoding: 返回文件打开的编码格式
  • file.close(): 关闭文件
  • file.closed: 判断文件是否关闭
  • file.read(size): 默认返回整个文件,size表示返回的字符个数。注:调用read()函数时,open()函数打开文件时的打开模式为"r"或"r+"。
  • file.readline():  返回一行。注:调用read()函数时,open()函数打开文件时的打开模式为"r"或"r+"。
  • file.readlines(size): 返回包含size大小的文本列表,默认返回整个文件列表,每个元素为文件的一行内容。注:调用read()函数时,open()函数打开文件时的打开模式为"r"或"r+"。
  • for line in file: print(line) #迭代访问
  • file.seek(offset, whence): 将文件指针移动到新的位置。offset指定移动的字符个数,whence指定从什么位置开始计算。0(默认值): 从文件开头计算;1:  从当前位置开始计算;2: 从文件尾开始计算。当open()函数打开文件时的打开模式没有用"b"时,则只能从文件头开始计算相对位置。
  • file.write(string): 向文件中写入string。注:调用write()函数时,open()函数打开文件时的打开模式为"w"或"a"。

python with语句与open()函数连用

使用open()函数打开文件后,要使用file.close()函数及时关闭,否则会出现意想不到的结果。另外,若打开的文件出现异常,会导致不能及时关闭文件。

with语句能够在处理文件时,无论是否出现异常,都能保证with语句执行完毕后关闭已打开的文件。

代码示例

编写含有以下内容名为learning_python.txt的文件

In Python you can construct function
In Python you can define class
In Python you can deal table

<一>

file_name = "learning_python.txt"
with open(file_name, mode="r") as file_object:
print(file_object.name)
print(file_object.mode)
print(file_object.encoding)
print(file_object.closed)

输出结果

learning_python.txt
r
cp936
False

<二>

file_name = "learning_python.txt"
with open(file_name, mode="r") as file_object:
"""读取文件的前9个字符"""
contents = file_object.read(9)
print(contents.rstrip())

输出结果

In Python

<三>

file_name = "learning_python.txt"
with open(file_name, mode="r") as file_object:
"""逐行读取"""
for line in file_object:
print(line.rstrip())

输出结果

In Python you can construct function
In Python you can define class
In Python you can deal table

<四>

file_name = "learning_python.txt"
with open(file_name, mode="r") as file_object:
"""逐行读取"""
num = 0
while True:
single_line = file_object.readline()
num += 1
if single_line == "":
break
print(single_line)

输出结果

In Python you can construct function

In Python you can define class

In Python you can deal table

<五>

file_name = "learning_python.txt"
with open(file_name, mode="r") as file_object:
"""创建一个包含文本的列表"""
lines = file_object.readlines()
print(lines)
pi_str = ""
for line in lines:
line = line.replace("Python", "Java")
pi_str += line
print(pi_str)
print(len(pi_str))

输出结果

['In Python you can construct function\n', 'In Python you can define class\n', 'In Python you can deal table']
In Java you can construct function
In Java you can define class
In Java you can deal table
90

<六>

file_name = "learning_python.txt"
with open(file_name, "r") as file_object:
file_object.seek(9)
print(file_object.read(12))

输出结果

 you can con

<七>

while True:
user_name = input("please input your name: ")
if user_name == "q":
break
else:
with open("users.txt","a") as file_object:
file_object.write("hello " + user_name + "!\n")

执行上述脚本后依次输入"lele","xiaohua"和"q",返回一个users.txt文件,内容包括:

hello lele!
hello xiaohua!

python内置函数open()的更多相关文章

  1. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  2. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  3. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  4. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  5. Python内置函数进制转换的用法

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

  6. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  7. Python内置函数(61)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string ...

  8. 那些年,很多人没看懂的Python内置函数

    Python之所以特别的简单就是因为有很多的内置函数是在你的程序"运行之前"就已经帮你运行好了,所以,可以用这个的特性简化很多的步骤.这也是让Python语言变得特别的简单的原因之 ...

  9. Python 内置函数笔记

    其中有几个方法没怎么用过, 所以没整理到 Python内置函数 abs(a) 返回a的绝对值.该参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 all(a) 如果元组.列表里面的所有元素都非 ...

  10. 【转】实习小记-python 内置函数__eq__函数引发的探索

    [转]实习小记-python 内置函数__eq__函数引发的探索 乱写__eq__会发生啥?请看代码.. >>> class A: ... def __eq__(self, othe ...

随机推荐

  1. 2022-3-24内部群每日三题-清辉PMP

    1.敏捷团队成员认为每日站会并不会增加价值,是因为小组规模太大.在回顾会议上,他们提出将现有的项目团队分解成更小的小组.Scrum主管应该怎么做? A.缩小团队规模,使站会更易于管理. B.在采取行动 ...

  2. ts补充

    // ts中类型主要包括 1.元组 2.接口(对象,函数,构造器)类型 3.枚举类型 4.字面量类型 5.特殊类型 // ts中类型类型运算主要包括 1.条件类型 : 2.推导类型 3.联合类型 4. ...

  3. 攻防世界Web进阶篇——NewsCenter

    题目有一个搜索框,下面是搜索结果,最先考虑是sql注入 遇到sql注入,一般先用单引号,1,2尝试.先尝试构造输入为:sd' union select 1,2 #和sd' union select 1 ...

  4. 解决tomcat8080端口占用问题

    解决tomcat8080端口占用问题 1. 使用管理员权限打开cmd 2. 输入 netstat -ano | findstr 8080 找出占用8080端口的进程pid netstat -ano | ...

  5. Day09-方法

    方法 一.何谓方法 java方法是语句的集合,他们在一起执行一个功能 方法是解决一类问题的步骤的有序集合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则: 方法的本意是功能 ...

  6. 利用expect交互批量修改普通用户过期密码

    利用expect交互批量修改普通用户过期密码 因为公司接了一个密码托管的活,有10000多台机器,系统有 openSUSE,SUSE,Ubuntu,centos,Oracle-Linux, 而且什么版 ...

  7. 项目实训 DAY8

    功能页面开发完毕,实现了两种工具(d3.js/echarts.js)的可视化效果,并与前端整合完毕. 项目实训步入尾声,最后的几(一)天大概就是完善最后的工作,准备答辩.

  8. sdio/mmc/sd笔记

    [SDIO] SD card 初始化及常用命令解析 https://blog.csdn.net/u010443710/article/details/107014873 cmd0命令,是单向命令,ho ...

  9. Yarn API

    Yarn API: 1. 查询整个yarn集群指标: GET http://{cluster_domain_name}|{rm_ip:8088}/ws/v1/metrics 2. 查看指定队列的所有任 ...

  10. Vuex----Mutations

    注意: 只能通过 mutations里的函数才能修改 state 中的数据 第一种方法: const store = new Vuex.Store({ state:{ count:0 }, mutat ...