第十一课,文件操作

第十一课:文件的常规操作 讲课老师:风陨老师

2021/4/16
一、文件的打开与关闭,有打开就有关闭

​ 1、 文件操作的步骤:(1)、打开文件

​ (2)、操作文件

​ (3)、关闭文件

​ 2,文件目录等级: (1)、绝对路径:绝对路径就是当前文件的准确位置

​ (2)、相对路径:①同级路径,调用方式 '.'一个点

​ ②不同级路径,上级’…'两个点

​ 3、打开文件:open() 需要三个参数: (1)、需要打开的文件名

​ (2)、操作方式

​ (3)、编码指定

open_file = open("youxi.py", 'r',encoding='utf8') # 打开文件
print(read_open)                                                                  


open_file.close()    # 关闭文件
二、文件的访问方式

1、r 以读取的方式打开文件,文件的游标默认放在文件的开头

read_open = open("youxi.py", 'r',encoding='utf8')  # 返回文件对象


read_open.close() # 关闭文件

注意:读取r方式打开的文件只能读,不能修改或写入

2、w 写入的打开方式,如果该文件已存在则将其覆盖。如果该文件不存在,则创建新文件

Write_open = open("youxi.py", 'w',encoding='utf8')

pritn(Write_open)   

#如果没有youxi.py文件,就会在同级重新再建立一个新的 youxi.py 文件                       
#如果有youxi.py文件 ,就会被覆盖

Write_open.close()

注意:以w写入方式打开的文件会被清空

3、a 追加的方式打开文件,如果该文件已存在,游标默认放在文件的结尾,新的内容会被写入到已 有内容的后面。如果该文件不存在,则创建新的文件进行写入。

addto_open = open("youxi.py", 'a',encoding='utf8')


print(addto_open.write('游戏结束'))  #操作文件

#如果youxi.py文件存在,'游戏结束'就会被写入到youxi.py文件已有内容的最后面
#如果youxi.py文件不存在,就会在同级新建youxi.py文件,再写入'游戏结束'


addto_open.close()

注意:以追加的方式打开文件不可读取

小知识:
(1)r+/w+/a+,在原功能的基础上增加读写的功能,但是想要使用相应功能,光标位置调整至文件开头

(2)rb/wb/ab,是以二进制的方式对文件进行操作,不指定编码

(3)rb+/wb+/ab+,以二进制的方式打开文件,在原功能的基础上增加读写的功能,但是想要使用相应功能,光标位置调整至文件开头

三、读取写入文件相关操作

1、read() 读取指定数量内容(如果传入数值可控制读取数据多少)

read_open = open("youxi.py", 'r',encoding='utf8')

pritn(read_open.read())      #对文件进行读取操作
#默认读取所有数据


pritn(read_open.read(100))   #对文件进行读取操作
#传值是100就读取100个数据


read_open.close()

2 readline() 读取一行的内容

readline_open = open("youxi.py", 'r',encoding='utf8')

print(redaline_open.readline()) #对文件进行读取一行操作

#默认读取第一行的数据


readline_open.close()

3、readlines() 读取多行的内容

readlines_open = open("youxi.py", 'r',encoding='utf8')

print(readlines_open.readlines())      #对文件进行多行读取操作

#默认读取所有数据


print(readlines_open.readlines(100))

#传值为100就读取100行数据

readlines_open.close()

4、write() 写入内容

Write_open = open("youxi.py", 'w',encoding='utf8')

pritn(Write_open.wite('游戏结束...')) #对文件进行写入操作

#在youxi.py文件中已有的内容全部被覆盖写入'游戏结束'此时的youxi.py文件只有'游戏结束...'内容


Write_open.close()

5、writelines() 写入多行内容

Writelines_open = open("youxi.py", 'w',encoding='utf8')

print(witelines_open.witelines('我将写入多行代码,这是第一行\n这是第二行\n这是第三行'))

#在youxi.py文件中已有的内容全部被覆盖写入'我将写入多行代码,这是第一行\n这是第二行\n这是第三行'此时的youxi.py文件只有'我将写入多行代码,这是第一行\n这是第二行\n这是第三行'。三行代码内容


witelines_open.close

6、flush() 立即刷新缓冲区域(手动保存)

flush_open = open("youxi.py", 'r+', encoding='utf8')

print(flush_open.flush())                           #对文件进行刷新手动保存操作

#flush用来刷新缓冲区的,把缓冲区中的数据立刻写入文件,同时清空缓冲区。

flush_open.close()

7、tell() 获取游标位置

tell_open = open("youxi.py", 'r+', encoding='utf8')

print(tell_open.tell())                            #查找游标位置

#使用tell获取文件游标的当前位置:1、用R和W模式打开的文件游标默认在开头,也就是0 
#                           2、用a追加模式打开的文件游标默认在结尾就是2
						    


tell_open.close()

8、seek() 调整游标位置

seek_open = ("youxi.py", 'rb')

print(seek_open.seek())
#位置调整:1、输入0时游标调整到文件开头的位置
#          2、输入为1时游标调整到游标当前位置
#          3、输入2时,游标位置调整到最后


seek_open.close()

#注意:调整位置是以二进制单位读取数据,所以打开文件的方式是二进制,rb , wb,ab,在此情况下不用指定传编码

9、 偏移量:

offset_open = ("youxi.py", 'rb')

print(offset_open.seek(5, 0))    # 其中5指的就是偏移量,0为开头,把游标调到开头完后移5


#          1、输入0时游标调整到文件开头的位置
#          2、输入为1时游标调整到游标当前位置
#          3、输入2时,游标位置调整到最后


offset_open.close()

四、实现文件备份


old_fileName = input('请输入需要拷贝的的文件\n')               #设置想要拷贝的文件

old_file = open(old_fileName, 'r', encoding='utf8')        #打开想要拷贝的文件

if old_file:                                               #如果文件能打开

    suffix = old_fileName.rfind('.')                       #查看后缀名字

    if suffix > 0:                                         #如果有后缀名

        new_suffix = old_fileName[suffix:]                 #提取后缀名
        # print(new_suffix)

    new_file = old_fileName + '[拷贝]' + new_suffix         #拷贝文件
    # print(suffix)
    new_file_open = open(new_file, 'w', encoding='utf8')    #打拷贝的文件
	
   	    for eachline in old_file.readlines():              #读取每一行  

        new_file_open.write(eachline)                      #写入每一行


old_file.close()                                            #关闭旧文件
new_file_open.close()                                       #关闭新文件
    

五、os 模块的目录及文件操作

import os             #调用os模块为内置模块


1、os.getcwd()  显示当前路径
 
  print(os.getcwd())


2、os.listdir() 显示同级目录下的所有文件
 
  print(os.listdir())
    
    
3、os.chdir() 改变当前路径
 
  print(os.getcwd())  #当前路径在现在目录的位置
  print(os.chdir('输入需要改变到哪一个目录'))
  print(os.getcwd())  #当前路径变成输入后的路径


4、os.mkdir() 创建新文件夹

  print(os.mkdir('../输入新文件夹名'))
    

5、os.rmdir() 删除指定目录,且此目录必须为空。否则报错
  
  print(os.rmdir('../输入要删除的空文件夹'))


6、os.system() 执行系统指令
 
   print(os.system('输入指令英文名,如help'))


7、os.remove() 指定路径删除,且只能是文件不能是文件夹

   print(os.remove('输入要删除路径中的文件名'))


8、os.rename('old','new') 对一个旧的文件重新命名

  print(os.rename('old_file.py', 'new_file.py'))

六、os.path模块操作

1、os.path.join   目录和文件名合成一个路径

  print(os.path.join('文件夹名/dfs/文件夹名''文件名字'))
    

2、os.path.basename() 返回文件名

  print(os.path.basename('输入要返回位置的文件名'))
    

3、os.path.abspath()  查看绝对路径

 print(os.paht.abspath('输入要返回绝对路径的文件名'))
    
    
4、os.path.relpath()  相对路径
  
  python(os.path.relpath('文件名', '同级或者不同级文件夹名'))


5、os.path.getsize()     查看文件大小

 print(os.path.getsize('输入要查看大小的文件'))
    
    
    
6、os.path.getctime()   查询文件创建时间  

  print(os.path.getctime('输入需要查看的文件名'))
    

    
7、os.path.getmtime()    查询最近修改时间
 
  print(os.path.getmtime('输入要查询的文件名'))


8、os.path.getatime()  查询最近访问时间

 print(os.path.getatime('输入要查询的文件名'))
    


9、os.path.exists()    判断路径中是否存在想要的文件

 print(os.path.exists('输入文件名'))
    
    
10、os.path.isdir()    判断是否是文件目录

  print(os.path.isdir('输入文件名'))

    
11、os.path.isfile()   判断是否为文件

  print(os.path.isfile('输入文件名'))
    

12、os.path.isabs()    判断是否为绝对路径

  print(os.path.isabs('输入文件名'))
  

七、上下文管理器

with open('文件名','r',encoding='编码方式') as a,\
     open('文件名','r',encoding='编码方式') as b,\
     open('文件名','r',encoding='编码方式') as c:
     a = a.readlines()
     b = b.readlines()
     c = c.readlines()

print(a, b, c)

小知识:上下文管理器实现原理
1with open() as a:  自动执行打开文件关闭的过程(一个或多个)
2、a:  变量接收名,后面通过它对打开文件执行读,写,追加的相应的操作
3、内部代码也可执行其它操作
4、内部代码执行结束时,自动执行关闭文件操作


八、导,自定义函数路径

import sys   #导包
sys.path     #查看所有能导包的路径

sys.path.append('添加需要导包的路径')  #如果想导的路径不在导包目录中就进行添加后即可导路径



from 准确的路径 import 文件内容        #路径导包

print(文件内容)                      #测试是否成功导入
                                                 The   end
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值