• Python之文件操作


    一、文件外部操作

    本节主要介绍Python的os模块对文件夹和文件等的操作,例如创建、删除、重命名文件,获取文件路径、文件名、文件扩展名等。

    不涉及对文件内容进行操作。

     1 #Author:Azrael
     2 # _*_ coding:utf-8 _*_
     3 import os
     4 import shutil
     5 print(os.getcwd())#打印当前文件所在路径
     6 print(os.listdir('D:Python代码'))#列出该路径下所有的文件和文件夹
     7 os.remove(r'C:UsersAdministratorDesktop	est.txt')#删除指定文件
     8 os.removedirs(r'C:UsersAdministratorDesktop	est')#删除指定目录
     9 print(os.path.isfile(r'C:UsersAdministratorDesktop	est.txt'))#判断指定是否为文件
    10 print(os.path.isdir(r'C:UsersAdministratorDesktop	est'))#判断指定是否为文件夹
    11 print(os.path.isabs(r'C:UsersAdministratorDesktop	est'))#判断是否为绝对路径
    12 print(os.path.exists(r'C:UsersAdministratorDesktop	est'))#判断指定文件夹是否存在
    13 print(os.path.split(r'C:UsersAdministratorDesktop	est'))#把路径分割为目录名和文件名
    14 print(os.path.splitext(r'C:UsersAdministratorDesktop	est.txt'))#把路径分割为路径名和文件扩展名
    15 print(os.path.dirname(r'C:UsersAdministratorDesktop	est.txt'))#获取文件路径
    16 print(os.path.basename(r'C:UsersAdministratorDesktop	est.txt'))#获取文件名
    17 os.system('ipconfig')#获取本机网络信息
    18 os.putenv("test","eee")#设置一个环境变量,临时的
    19 print(os.getenv("test")) #获取一个环境变量,如果没有返回none
    20 os.linesep#返回当前平台的行终止符
    21 os.rename(r'C:UsersAdministratorDesktop	est1.txt', r'C:UsersAdministratorDesktop	est.txt')#重命名
    22 os.makedirs(r'C:UsersAdministratorDesktop	est1	est1')#创建目录,相当于mkdir -p
    23 os.mkdir(r'C:UsersAdministratorDesktop	est1')#创建目录
    24 print(os.stat(r'C:UsersAdministratorDesktop	est1'))#获取指定文件的属主、组、大小、atime等信息
    25 #os.chmod(r'C:UsersAdministratorDesktop	est1')  #windows下不能这样使用
    26 os._exit('进程号')#退出指定进程号的进程
    27 print(os.path.getsize(r'C:UsersAdministratorDesktop	est.txt'))#获取文件大小
    28 os.mknod(r'C:UsersAdministratorDesktop	est.txt') #windows无法使用;创建文件test.txt
    29 
    30 os.mkdir(r'C:UsersAdministratorDesktop	est')    #创建文件夹
    31 open(r'C:UsersAdministratorDesktop	est.txt','w')    #创建文件
    32 shutil.copyfile(r'C:UsersAdministratorDesktop	est.txt',r'C:UsersAdministratorDesktop	est1.txt')
    33 #复制test.txt并命名为test1.txt,test1.txt存在与否无关系
    34 shutil.copy(r'C:UsersAdministratorDesktop	est.txt',r'C:UsersAdministratorDesktop	est1.txt')
    35 #复制test.txt并命名为test1.txt,test1.txt存在与否无关系
    36 shutil.copytree(r'C:UsersAdministratorDesktop	est',r'C:UsersAdministratorDesktop	est1')
    37 #将文件夹test复制成并命名为test1,test1不能已经存在
    38 os.rename(r'C:UsersAdministratorDesktop	est',r'C:UsersAdministratorDesktop	est1')
    39 #将test重命名为test1.文件和文件夹都适用
    40 shutil.move(r'C:UsersAdministratorDesktop	est.txt',r'C:UsersAdministratorDesktop	est1	est.txt')
    41 #将桌面的test.txt移动到桌面的test1文件夹下面
    42 os.remove(r'C:UsersAdministratorDesktop	est1	est.txt')    #删除文件
    43 os.rmdir(r'C:UsersAdministratorDesktop	est1')   #删除空目录
    44 shutil.rmtree(r'C:UsersAdministratorDesktop	est1')  #删除目录
    45 print(os.getcwd())  #打印当前所在的路径
    46 os.chdir(r'C:UsersAdministratorDesktop	est1') #切换路径
    47 print(os.getcwd())  #打印当前所在的路径
    文件外部操作

     

    二、文件内容操作

    1、打开文件模式

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

      "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

      "U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

    • rU
    • r+U

      "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    2、语法介绍

     1 #Author:Azrael
     2 f=open("test",encoding="utf-8")#打开指定文件,默认为只读模式
     3 print(f.readline())#打印文件一行内容,但是文件所有内容已经加载内存
     4 print(f.readlines())#从光标所在地起打印文件所有内容,生成一个列表,以一行为一个元素
     5 print(f.read())#从光标所在地起打印文件所有内容
     6 f.close()#关闭文件
     7 f.write("bbbbbbb")#将字符串bbbbbbb写入文件
     8 print(f.readable())#判断当前打开文件方式是否可读
     9 f.seek(50)#将光标移动到指定位置
    10 print(f.tell())#返回当前光标所在位置
    11 print(f.writable())#判断当前打开文件方式是否可写
    12 f.truncate(5)#截取文件指定字符长度,只有在可写情况才能执行
    13 print(f.seekable())#判断文件光标是否可操作
    14 with open("test",encoding="utf-8") as f: #上下文管理,避免忘记关闭打开文件
    15     print(f.readline())
    Python操作文件内容

     

    三、练习

    1、题目要求

     1 查找:
     2 
     3 用户输入:如果你不曾心碎你不会懂得我伤悲
     4 
     5 返回结果:结果显示此句后所有内容
     6 
     7 增加:
     8 
     9 用户输入:谁在乎我的心里有多苦
    10 
    11      谁在意我的明天去何处
    12 
    13 返回结果:文件中增加用户输入内容
    14 
    15 删除:
    16 
    17 用户输入:谁在乎我的心里有多苦
    18 
    19      谁在意我的明天去何处
    20 
    21 返回结果:文件中增加用户输入内容
    题目要求
     1 歌手:刘德华 专辑:忘情水
     2 曲:陈耀川词:李安修
     3 曾经年少爱追梦一心只想往前飞
     4 行遍千山和万水一路走来不能回
     5 蓦然回首情已远身不由已在天边
     6 才明白爱恨情仇最伤最痛是后悔
     7 如果你不曾心碎你不会懂得我伤悲
     8 当我眼中有泪别问我是为谁
     9 就让我忘了这一切
    10 啊给我一杯忘情水换我一夜不流泪
    11 所有真心真意任它雨打风吹
    12 付出的爱收不回
    13 给我一杯忘情水换我一生不伤悲
    14 就算我会喝醉就算我会心碎
    15 不会看见我流泪
    题目文本元素

    3、参考答案

     1 #Author:Azrael
     2 import os
     3 #查找
     4 f=open("test",'r+',encoding="utf-8")
     5 with open("test",encoding="utf-8") as f:
     6     select_info=input("麻烦您输入查询标志:")
     7     for line in f :
     8         if select_info in line:
     9             print(f.read())
    10 #插入
    11 with open("test",'a', encoding="utf-8") as f:
    12     insert_info=input("麻烦您输入想增加的内容:")
    13     list=insert_info.split(",")
    14     for info in list:
    15         f.write(info+"
    ")
    16 #删除
    17 with open("test",'r+',encoding="utf-8") as f,
    18 open("test1",'a',encoding="utf-8") as f_new:
    19     delete_info=input("麻烦您输入想删除的内容:")
    20     delete_list=delete_info.split(",")
    21     for line in f:
    22         if line.strip() in delete_list:
    23             print(line)
    24         else:
    25             f_new.writelines(line)
    26 
    27 os.replace("test1","test")
    参考答案
  • 相关阅读:
    20210309-2 阅读任务
    20210309-1 准备工作
    课程总结
    第十四周课程总结&实验报告(简单记事本的实现)
    十三周课程总结
    十二周课程总结
    第十一周课程总结
    C语言ll作业01
    C语言寒假大作战04
    C语言寒假大作战03
  • 原文地址:https://www.cnblogs.com/kowloon/p/8335896.html
Copyright © 2020-2023  润新知