简述python文件操作

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

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

读文件
在python中,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件
格式为:open(文件路径,访问模式)

#以只读方式的模式打开一个当前路径下的test.txt文件,并将其赋值给变量f
#open()函数默认以只读方式写入,故只读模式"r"可省略不写
f=open("test.txt","r")    

#调用read()方法一次性读取文件的全部内容(read方法适用于读取文件内容较少时),python语言将文件内容读到内存中,用字符串的方式表示,并打印到屏幕上
content = f.read() #将程序所得到的返回值存放到变量content中
print(content)    #打印其返回值,即就是该文件的内容
#最后一步是调用close()方法关闭文件,文件使用完毕之后必须关闭.
f.close()

读二进制文件

input=open("test.txt","rb")

读取一行内容,使用readline()方法:

f=open("test.txt","r")
f.readline()        

结果为:

'this is first line\n'

读取所有行的内容,使用readlines()方法

f=open("test.txt","r")
f.readlines()
f.close()

输出结果为:

['this is first line\n', 'this is second line\n']
f.close()

遍历文件数据

f=open("test.txt","r")
for line in f:
    print (line)
f.close()

输出结果为:

this is first line
this is second line
this is third line

那为什么要关闭文件呢?
由于内存的访问速度要远远快于磁盘的访问速度,python分配了一块叫做缓冲区的内存空间,用来临时保存将要写入磁盘的数据.一旦缓冲区满了,或者文件被关闭了,缓冲区里的内容就会被写入磁盘.所以在操作结束后,必须关闭文件,以确保所有的数据在物理层面上传输到磁盘中.

#以只写的模式打开一个当前路径下的test.txt文件,并将其赋值给变量f
#访问模式"w"表示对一个文件进行写入操作,如果该文件已存在则将其覆盖,如果不存在则创建该文件
f=open("test.txt","w") 
f.write("hello,world") #使用write()方法将括号中的字符串("hello,world")写入到该文件内
f.close  #关闭文件

写二进制文件

output=open("test","wb")

附上访问模式的说明:

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

复制文件
将test.txt文件复制到本路径下,文件名叫hello.txt

old_file= open("test.txt","r") #首先打开要复制的文件,并将结果赋值给变量old_file

new_file=open("hello.txt","w") #然后在本路径下创建一个新的文件名叫hello.txt,并将结果赋值于变量new_file

content=old_file.read()  #从test.txt文件中读取数据,并将其结果赋值给变量content

new_file.write(content)  #将test.txt文件的内容写入到hello.txt文件内

old_file.close()        #关闭打开的test.txt文件
new_file.close()        #关闭打开的hello.txt文件

复制大文件

old_file= open("test.txt","r") #首先打开要复制的文件,并将结果赋值给变量old_file

new_file=open("hello.txt","w") #然后在本路径下创建一个新的文件名叫hello.txt,并将结果赋值于变量new_file
while True:     #多次循环,每次读取固定的长度,避免一次读取太多导致内存爆满
    content=old_file.read(1024)  #从test.txt文件中读取数据,设置一次读取1024字节的字符,并将其结果赋值给变量content
    if len(content)==0:
        break
    new_file.write(content)  #将test.txt文件的内容写入到hello.txt文件内

old_file.close()        #关闭打开的test.txt文件
new_file.close()        #关闭打开的hello.txt文件

文件相关操作
Python内置的os模块可以调用操作系统提供的接口函数,对文件或目录进行操作(实际上操作系统是不允许应用程序直接访问和操作文件和目录的,读写文件就是请求操作系统打开一个文件对象,通常称为文件描述符。然后,通过操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象。)

1,文件重命名
OS模块中的rename()方法可以完成对文件的重命名操作
格式为:rename (原文件名,新文件名)

import os  #导入os模块,导入之后才可以使用该模块中的方法
os.rename("test.txt","test2.txt")   #将当前路径下的test.txt文件重命名为test2.txt

2,删除文件
os模块中的remove()方法可以完成对文件的删除操作
remove(需要删除的文件名)

import os
os.remove("test.txt")   #删除当前路径下的test.txt文件

3,创建/删除文件夹

import os
os.mkdir("test")    #使用os模块中的mkdir方法创建文件夹
os.rmdir("test")    #使用os模块中的rmdir方法删除文件名

4,获取当前目录的绝对路径

import os 
os.getcwd()     #使用os模块中的getcwd方法获取当前目录的绝对路径

5,改变文件创建的默认路径

import os
os.chdir("../")     #改变创建文件时的默认路径为当前目录的上一层目录

6,列出所制定的目录下的文件,类似于windows下的dir,Linux下的ls,但以列表的形式列出

import os
a = os.listdir("./")    #列出当前目录下的文件,将结果赋值给变量a
print(a)

输出结果为:


['.idea', 'demo1.py', 'demo2.py', 'demo3.py', 'hello.txt', 'test.txt']
#在该列表中每一个字符串即就是所指定路径下的文件名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值