Python文件操作

文件操作介绍:

文件的打开和关闭: f = open('test.txt', 'w') 以写的方式打开。

 f.close() 关闭文件,打开之后操作完一定切记要关闭文件。

打开方式详解:

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

文件的读写:

写文件: f.write("xxxxxxxxxxx")

读文件:

  1. read():使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
  2. readlines():就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
  3. readline():一行一行的读相当于readlines(1)

小练习:制作文件备份

 1 #获取要复制的文件名
 2 #打开要复制的文件
 3 #获取复制后的文件名 如:haha.txt -----> haha[复件].txt
 4 #创建复制后的文件,复制内容
 5 #关闭两个文件
 6 old_fileName = input("请输入要复制的文件:")
 7 
 8 old_file = open(old_fileName,"r")
 9 
10 position = old_fileName.rfind(".")
11 new_fileName = old_fileName[:position] + "[复件]" +old_fileName[position:]
12 
13 new_file = open(new_fileName,"w")
14 
15 new_file.write(old_file.read())
16 
17 old_file.close()
18 new_file.close()

思考:若一个内存只有4G的电脑要操作一个5G的文件怎么办?

  分析:因为系统内存只有4G不可能将5G的内存全部调入内存,因此可以分块操作。比如小练习中,每次读入内存的大小为1M。

1 while True:
2     if len(content) == 0:    #判断是否到文件的末尾。
3         break
4     content = f.read(1024)    #限制每次读入1M,下一次循环就是紧接着的1M

文件的随机读写:

<1>tell:在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取。

<2>seek(offset, from):如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek(),定位操作位置。         

  • offset:偏移量
  • from:方向
    • 0:表示文件开头
    • 1:表示当前位置
    • 2:表示文件末尾

文件的重命名、删除:

需要对文件进行重命名、删除等一些操作,需要导入os模块。 import os

   重命名: os.rename(oldName,newName) 

   删除文件: os.remove(fileName)

文件夹操作: 

实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块。

<1>创建文件夹

    import os

    os.mkdir("张三")

<2>获取当前目录

    import os

    os.getcwd()

<3>改变默认目录


    import os

    os.chdir("../")

<4>获取目录列表


    import os

    os.listdir("./")

<5>删除文件夹

    import os

    os.rmdir("张三")

小练习:批量修改文件名

主要需要主要文件夹操作时的路径问题,下面有两种方法的展示,一种是用os.chdir()改变路径,一种是在文件名前添加路径。

 1 import os
 2 #获取所要修改文件夹名
 3 folderName = input("请输入所要操作文件夹的名字:")
 4 #获得文件夹里所有的文件名
 5 fileNames = os.listdir(folderName)
 6 #更改姓名(系统操作导入os)
 7 os.chdir(folderName)
 8 for fileName in fileNames:
 9 newFileName = "[航哥出品]-" + fileName
10 #法二:
11 #os.rename("./"+folderName+"/"+fileName,"./"+folderName+"/"+"[航哥出品]-"+fileName)
12 
13 os.rename(fileName,newFileName)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值