python创建文件对象

描述

2.1.

创建文件对象

**open()

函数用于创建文件对象,基本语法格式如下:** open(文件名[,打开方式])

注意:

  • 如果只是文件名,代表在当前目录下的文件.

    文件名可以录入全路径,比如:D:\\a\\b.txt 可以使用原始字符串 r“d:\\b.txt” 减少 \\ 的输入 ,

    因此以上代码可改写成 f = open(r"d:\\b.txt","w")

  • 作为入参的打开方式如下(经常会用!!!)python

  • 文本文件对象和二进制文件对象的创建如果是二进制模式

    b ,则创建的是二进制文件对象,处理的基本单元是“字节” 如果没有增加模式 b

    ,则默认创建的是文本文件对象,处理的基本单元是“字符”

2.2.

文件的写入

文本文件的写入一般就是三个步骤:

  • 创建文件对象
  • 写入数据
  • 关闭文件对象

基本文件的写入操作

实操代码

# 1.使用open()方式
f = open(r"d:\\a.txt", "a")
s = "TimePause\\n时间静止\\n"
f.write(s)
f.close()

结果展示

python

中文乱码

代码编写时

windows

操作系统默认的编码是 GBK , Linux 操作系统默认的编码是 UTF- 8 .**当我们用

open() 时,调用的是操作系统相关api来打开的文件,并且默认的编码是 GBK 但是由于我们通常习惯将所有代码编码都设置成 UTF- 8 .,

因此在打开时会出现乱码问题, 如下图所示**

python解决方案: 按照上图提示,

将文本编码设置成 GBK格式读取即可python注意: 我们还可以通过指定编码来解决中文乱码问题.

因为我们将pycharm文本读写编码都设置成

utf-8, 因此只要 **我们在文件写入的时候规定编码为

utf-8(默认gbk)** , 那么我们在读取时就不会出现乱码. 如下代码

实操代码

# 【示例】通过指定文件编码解决中文乱码问题
f = open(r"d:\\bb.txt", "w", encoding="utf-8")
f.write("一个有温情的小站\\n时间静止不是简史")
f.close()

控制台输出时****问题描述

我们一般习惯把pycharm所有字符编码设置成utf-8时.

在我们进行网络请求时, 有时候会返回乱码问题, 如下图

python

python

问题分析

因为我们在

pycharm 设置所有字符编码均为 UTF-8, 但是**通过网络请求得到GBK格式的文本,

然后我们仍以 UTF-8 编码去解码就会出现乱码**

解决方案

可以将项目编码设置成GBK格式即可;

也可以通过文本操作代码对得到的数据进行GBK格式读取 亦或者在写入时, 直接将编码声明为UTF-8

pythonpython

write()/writelines()写入数据

  • write(a) :把字符串

    a 写入到文件中

  • writelines(b) :把字符串列表写入文件中,不添加换行符

实操代码

# 【操作】添加字符串列表数据到文件中
f = open(r"d:\\bb.txt", 'w', encoding="utf-8")
s = ["什么鬼\\n"] * 3  # 通过 \\n实现手动换行
f.writelines(s)
f.close()

close()关闭文件流

由于文件底层是由操作系统控制,所以我们打开的文件对象必须显式调用

close() 方法关闭文件对象. 当调用 close() 方法时,首先会把缓冲区数据写入文件(也可以直接调用 flush()

方法),再关闭文件,释放文件对象

注意:

  • close()一般结合异常机制的

    finally 一起使用

  • 也可以**通过

    with 关键字实现无论何种情况都能关闭打开的文件对象(推荐)**

实操代码

# 【操作】结合异常机制的 finally ,确保关闭文件对象
# "a" 设置打开方式为追加模式
try:
    f = open(r"d:\\c.txt", "a")
    s = "来自深渊"
    f.write(s)
except BaseException as e:
    print(e)
finally:
    f.close()

with语句(上下文管理器)

with关键字

(上下文管理器)可以自动管理上下文资源,不论什么原因跳出 with块 ,都能确保文件正确的关闭,

并且可以在代码块执行完毕后自动还原进入该代码块时的现场

实操代码

# 【操作】使用 with 管理文件写入操作
s = ["齐格飞"] * 3
with open(r"d:\\cc.txt", "w") as f:
    f.writelines(s)
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分