Bootstrap

0基础学python-17:文件读写

目录

前言

文件读写三步走:

        打开文件-->读写文件-->关闭文件

一、打开文件

1.文件位置

绝对位置:

相对位置:

2.open()方法

二、读写文件

1.读取文件

2.写入文件

三、关闭文件

1.close()

2.with语句


前言

        读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

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

 

文件读写三步走:

        打开文件-->读写文件-->关闭文件

 

一、打开文件

        在打开文件之前先学习一下文件的位置这个概念

1.文件位置

        在文件系统中,位置可以分为绝对位置和相对位置,它们决定了文件或目录在文件系统中的位置。

绝对位置:

       绝对位置是文件或目录在文件系统中的完整路径,从根目录开始直到文件或目录的位置。它不依赖于当前工作目录。

例如,在Windows系统中的绝对位置可能是:

  • C:\Users\Username\Documents\file.txt
  • D:\Projects\myproject\data\output.csv

可以看出,绝对位置是从盘符开始的。

相对位置:

        相对位置是相对于当前工作目录或另一指定目录的路径。它不包含根目录,而是相对于某个基准位置的路径。

例如,在当前工作目录为 C:\Users\Username\Documents\ 的情况下,相对路径可能是:

  • file.txt (相对于当前目录)
  • ../Data\output.csv (相对于当前目录的上级目录中的 Data 文件夹)

相对位置里用./表示同级目录下的文件,用../表示上级目录下的文件

 

2.open()方法

        open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)

完整形式

参数说明

  • file: 必需,文件路径(相对或者绝对路径)
  • mode: 可选,文件打开模式,默认为r
  • encoding: 一般使用utf8编码

代码实例

#绝对路径
# 打开文件 "D:/Code/python_code/day07/fp",以写入模式进行操作,并指定编码为 UTF-8
fp = open(r"D:/Code/python_code/day07/fp", "w", encoding="utf8")

#相对路径
# 打开相对路径 "../day08/HomeWork" 的文件,以读取模式进行操作,并指定编码为 UTF-8
f2 = open(r"../day08/HomeWork", "r", encoding="utf8")

# ========= ===============================================================
# Character Meaning
# --------- ---------------------------------------------------------------
# 'r'       打开文件用于读取(默认模式)
# 'w'       打开文件用于写入,先截断文件(即清空文件内容)
# 'x'       创建新文件并打开用于写入
# 'a'       打开文件用于写入,如果文件存在则追加到文件末尾
# 'b'       二进制模式
# '+'       打开文件用于读写(更新)
# ========= ===============================================================
# 不同mode可以相互灵活组合:r、rb、w、wb等

 

 

二、读写文件

1.读取文件

文件内容如下

#作业
1、将身边的一个事物抽象出一个类。比如老师、学生、桌子、椅子、苹果、香蕉、枕头、被子或任意物品
-提供基本属性、基本的方法。
-通过类创建出几个不同的对象。
-打印它们的属性、调用它们的方法。
```python
```
2、题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。带上tryexcept。
```python
```

代码实例

f2 = open(r"../day08/HomeWork", "r", encoding="utf8")

# read 不传参 取所有数据
# read 传参 取几个字符
# 读取时候 如果同一次读取 就继续往后读
print(f2.read(1))
print(f2.read(1))
print(f2.readline())
print(f2.readline())

# readline 不带参数 读取一行
# 带参数 读几个字符
print(f2.readline(6))
# 参数如果过大 也不会超过这一行
print(f2.readline(100))

# readlines 返回的参数数列表
# 参数没到一行 读一行  参数超过一行读完下一行
print(f2.readlines(34))
# 读取所有的行 存入列表中
print(f2.readlines())

f2.close()   # 关闭文件

输出:注释的内容就是每一行打印出来的代码的原因

#     # print(f2.read(1))
作    # print(f2.read(1))
业    # print(f2.readline())

1、将身边的一个事物抽象出一个类。比如老师、学生、桌子、椅子、苹果、香蕉、枕头、被子或任意物品    
 # print(f2.readline())

-提供基本属    # print(f2.readline(6))
性、基本的方法。 # print(f2.readline(100))

['-通过类创建出几个不同的对象。\n', '-打印它们的属性、调用它们的方法。\n', '```python\n']
 # print(f2.readlines(34))

['```\n', '2、题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。带上tryexcept。\n', '```python\n', '```']
# print(f2.readlines())

 

2.写入文件

代码实例

fp = open(r"D:/Code/python_code/day07/fp", "w", encoding="utf8")

# 写文件
# write 往里写入字符串
fp.write("nihao helloworld\n")
print(fp.writable())  # 判断文件的可写性,可写输出True,否则输出False
fp.writelines("nihao\n")

# writelines可以写入字符串列表 把列表合并成大字符串
fp.writelines(["asdad", "dasdadada", "\n", "eeeeee"])

fp.close()  # 关闭文件

输出:写入文件操作,若所用位置无该文件,则会创建该文件。

True  # 由fp.writable()判断得出
nihao helloworld
nihao
asdaddasdadada
eeeeee

 

三、关闭文件

        关闭文件是一个重要的操作,用于释放系统资源并确保文件内容正确地保存到磁盘

1.close()

使用

文件名.close()

即可关闭文件。

 

2.with语句

        为了确保文件在处理完毕或发生异常时也能正确关闭,推荐使用 with 语句来自动管理文件的关闭

# 使用 with 语句打开文件,自动关闭文件
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

# 在 with 语句块之外,文件会自动关闭


        两种方法各有优缺点,进行简单的文件操作,如果能一次性写完,用with语句比较好;进行比较复杂的操作,比如循环写入文件,若总是开关文件,会对文件造成较大损耗,此时用close()则比较好。

;