Python中的文件操作

目录

文件操作的三个步骤:

打开文件

读写文件

read

readline

readlines

write

关闭文件

close

with open() as file:


文件操作的三个步骤:

1、用各种方式打开文件

2、对文件进行各种读写操作,然后保存

3、关闭文件

打开文件

        文件分为二进制文件和文本文件,他们的区别我在另一篇中做了详解:https://blog.csdn.net/Q_M_X_D_D_/article/details/94288203,可以帮助我们了解二进制文件和文本文件。

        打开文本文件的方式主要有:

  • r:以只读方式打开一个文本文件。
  • w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • r+:打开一个文件用于读写。文件指针将会放在文件的开头。
  • w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
  •  

        打开二进制文件的方式主要有:

  • rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
  • wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
  • wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

        Python中常用的打开文件的函数为:

open(file,mode,encoding)

        其中file为文件的地址,mode为打开文件的方式,encoding用于指定文本文件的编码格式,一般为“UTF-8”,打开文本文件时必须指定。这个函数会返回一个文件对象,对象中封装了许多对文件进行读写的函数。

读写文件

        所有读写函数都有文件指针的参与,文件指针用于指示当前读取或者写入数据的位置。而且打开文件的方式不同,文件指针的位置也不同。例如用 r 方式打开文件时,指针会放在文件的开头;而用a+方式打开文件时,指针会放到文件的末尾。这时如果想读取数据,就需要先将文件指针移到文件开头。

        seek函数可以指定文件指针的位置,有两个参数,offset表示文件指针相对起始位置移动的字节数;whence表示起始位置,用0表示文件头,1表示文件指针的当前位置,2表示文件尾。例如:

file = open("test.txt","a+",encoding="utf-8")
print(file.read()+"什么都没有")
file.seek(0,0)
print(file.read())
print(file.read()+"什么都没有")

        用a+方式打开时文件指针默认在文件尾,这时读数据肯定什么都读不出来,然后将指针移动到文件头后才会读出信息。当读出信息后,文件指针又移到了文件末尾,这时又什么都输不出来。输出结果为:

read

        读取出文件中的内容,而且是一次性全部读出来,对于比较小的文件这样读是没有问题的,但是对于较大的文件最好给read函数加一个参数size,size用来指定一次读出来的字节数。例如:

file = open("test.txt","r+",encoding="utf-8")
while True:
    content=file.read(9)
    if content:
        print(content)
    else:
        break

        在test.txt中我预先写入了10个“123456789”,每个数字占了1个字节,然后打开文件,每次只读出9个字节,然后将读出来的内容输出,输出结果为:

readline

        可以读出一行的数据,以换行符结尾,每取一行,文件指针就向下移动一行。例如:

file = open("test.txt","r",encoding="utf-8")
while True:
    content=file.readline()
    if content:
        print(content)
    else:
        break

        在test.txt文件中预先写入了三行“123456789”,然后不断地从文件中取出一行数据直到取完,然后输出,输出结果为:

        其中,每行数据后面跟着两个换行符,第一个换行是test.txt文件中行末的换行符,第二个是print的换行。

readlines

        可以用于按行读出数据,以换行符为分隔,每行的数据返回到一个list中。例如:

file = open("test.txt","r",encoding="utf-8")
content=file.readlines()
for i in content:
    print(i)

        在test.txt这个文件中我预先写入了三行“123456789”,然后用readlines函数按行读出来,最后输出,输出结果为:

write

        写文件一般用write函数,如果操作对象是一个文本文件的话,则需要传一个字符串作为参数,该方法可以分多次向文件中写入内容,但是不会自动换行,需要我们手动添加换行符。该方法会返回写入字符的个数。例如:

file = open("test.txt","w+",encoding="utf-8")
for i in range(1,6):
    file.write("123"+"\n")
file.seek(0,0)
print(file.read())

        输出结果为:

关闭文件

close

        file对象中的close用于关闭一个文件,关闭之后就不能再进行读写操作了。当一个file对象被引用到其他文件对象上时,原来的文件对象会自动调用close函数。close函数没有参数没有返回值。写close函数是个好习惯。

with open() as file:

        有一个方法可以省去写close函数的烦恼,也可以维护文件的一致性。写法为:

with open( '/path/to/file', 'r' ) as f:
	print( f.read() )

        用with open打开文件后,将文件对象赋给f,然后进行进行完文件操作后,自动调用close方法关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python文件操作是通过内置的`open()`函数进行的。`open()`函数用于打开一个文件,并返回一个文件对象,可以用于读取文件内容、写入文件内容或者进行其他文件操作。 下面是一些常见的文件操作示例: 1. 打开文件: ```python file = open("filename.txt", "mode") ``` 其,"filename.txt"是要打开的文件名,"mode"是打开文件的模式。常见的模式有: - "r": 只读模式,用于读取文件内容(默认模式)。 - "w": 写入模式,用于清空文件内容并写入新内容,如果文件不存在则创建新文件。 - "a": 追加模式,用于在文件末尾添加新内容,如果文件不存在则创建新文件。 - "x": 创建模式,用于创建新文件,如果文件已存在则会抛出异常。 2. 读取文件内容: ```python content = file.read() # 读取整个文件内容 print(content) ``` 3. 逐行读取文件内容: ```python for line in file: print(line) ``` 4. 写入文件内容: ```python file.write("Hello, world!") # 将字符串写入文件 ``` 5. 关闭文件: ```python file.close() # 关闭文件对象 ``` 在进行文件操作时,建议使用`with`语句来打开和关闭文件,以确保及时关闭文件并释放资源。例如: ```python with open("filename.txt", "r") as file: content = file.read() print(content) ``` 在`with`语句块打开的文件会在退出`with`语句块时自动关闭。 以上是一些基本的文件操作方法,你可以根据具体的需求使用不同的模式和方法来进行文件操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值