Python-文件操作

一、作用


思考:文件操作包含什么?
答:打开、关闭、读、写、复制。。。
思考:文件操作的作用是什么?
答:读取内容、写入内容、备份内容

总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

二、基本操作


2.1 文件操作的步骤
  1. 打开文件
  2. 读写等操作
  3. 关闭文件
    注意:可以只打开和关闭文件,不进行任何读写操作
    2.1.1 文件打开模式
    在python使用open函数,可以打开一个已经  存在的文件,或者创建一个新的文件
    open(name, mode) 
    # name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 
    # mode:设置打开文件的模式(访问模式):只读、写入、追加等。
    
    • 打开方式


      文件打开方式.png
    • 访问模式主模式讲解
      ''' 
      测试: 
      1.访问模式对文件的影响 
      2.访问模式对write()的影响 
      3.访问模式是否可以省略 
      ''' 
      # r:如果文件不存在,报错;不支持写入操作,表示只读 
      f = open('test.txt','r') # test.txt文件存在,可以使用只读模式打开,并且文件成功关闭 
      # f = open('test1.txt','r') # test1.txt文件不存在,无法读取,报错 
      # f.write('aaa') # 只读模式无法写入数据 
      f.close() 
      
      # w:只写,文件如果不存在,则新建文件;执行写入,会覆盖原有内容 
      f1 = open('1.txt','w') # 新建1.txt文件 
      f1.write('aaa') # 写入'aaa' 
      f1.write('bbb') # 覆盖原内容写入'bbb' 
      f1.close()
      
      # a:追加,如果文件不存在,新建文件;在原内容的基础上,追加新内容 
      f2 = open('2.txt','a') 
      f2.write('aaa') 
      # f2.write('zxc') 
      f2.close() 
      
      #访问模式可以省略,默认为只读模式 
      f3 = open('test.txt')     
      f3 = open('100.txt') # 报错 
      f3.close()
      
    • 其他访问模式
      ''' 
      测试目标: 
      1.r+、w+、a+区别 
      2.文件指针对数据读取的影响 
      ''' 
      # r+:如果没有文件则报错;文件指针在开头,所以可以读取出来数据 
      # f = open('test.txt', 'r+') 
      # f = open('test1.txt', 'r+') 
      
      # w+:没有该文件会新建文件;文件指针在开头;新内容会覆盖旧内容 
      # f = open('test1.txt', 'w+') 
      # f = open('test.txt', 'w+') 
      
      # a+:没有该文件会新建文件;文件指针在结尾,无法读取数据(指针后面没有数据) 
      # f = open('test100.txt', 'a+') 
      f = open('test.txt', 'a+') 
      print(f.read()) 
      
      content = f.read() 
      print(content) 
      f.close()
      
    2.1.2 文件对象方法
    • 2.1.2.1 写
      • 语法
        对象.write('内容')

      • 注意:

        1. w 和 a 模式:如果文件不存在则创建该文件;如果文件存在, w 模式先清空再写入, a模式直接末尾追加。
        2. r 模式:如果文件不存在则报错。
      • 2.1.2.2 读

        • read()
          文件对象.read(num)

          num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读
          取文件中所有的数据。

        • readlines()
          readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

        • readline()
          一次读取一行内容

      • 2.1.2.3 移动文件指针

        • 语法
          文件对象.seek(偏移量,起始位置)

          起始位置:

          1. 0:文件开头
          2. 1:当前位置
          3. 2:文件结尾
      • 2.1.2.4 关闭
        文件对象.close()

三、文件备份

3.1 步骤
  1. 接收用户输入的文件名
  2. 规划备份文件名
  3. 备份文件写入数据
3.2 实现
# 1.用户输入目标文件 jinghang.mp3.txt 
old_name = input('请输入您要备份的文件名:') 
# print(old_name) 

# 2.规划备份文件的名字 
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串 
rfind index = old_name.rfind('.') 

# print(index) 
# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀 # 使用切片[开始:结尾:步长]获取原文件名称和后缀 
print(old_name[:index]) 
print(old_name[index:]) 
new_name = old_name[:index] + '[备份]' + old_name[index:] 
print(new_name) 

# 3.备份文件写入数据(确保数据和源文件一样) 
old_f = open(old_name,'rb') 
new_f = open(new_name,'wb') 
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据为空则终止循环 
while True: 
    content = old_f.read(1024) 
    if len(content) == 0: 
          break 
    new_f.write(content) 
# 4.关闭文件 
old_f.close() 
new_f.close()
3.3 优化
# 2.规划备份文件的名字 
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串 rfind 
index = old_name.rfind('.') 
# print(index) 

if index > 0: 
    suffix = old_name[index:] 

# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀 
# 使用切片[开始:结尾:步长]获取原文件名称和后缀 
# print(old_name[:index]) 
# print(old_name[index:])
# new_name = old_name[:index] + '[备份]' + old_name[index:] 
new_name = old_name[:index] + '[备份]' + suffix 
print(new_name)

四、文件和文件夹的操作


在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:

  1. 导入os模块
    import os
  2. 使用os模块相关功能
    os.函数名()
4.1 文件重命名

os.rename(目标文件名,新文件名)

4.2 删除文件

os.remove(目标文件名)

4.3 创建文件夹

os.mkdir(文件夹名字)

4.4 删除文件夹

os.rmdir(文件夹名字)

4.5 获取当前目录

os.getcwd()

4.6 改变默认目录

os.chdir(目录)

4.7 获取目录列表

os.listdir(目录)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341

推荐阅读更多精彩内容

  • 1.打开文件 open() 函数 调用open()来打开一个文件,可以将文件分成两种类型。第一种,是纯文本(使用u...
    葱花思鸡蛋阅读 328评论 0 0
  • 我们目前的操作都是很直观地执行程序,要么是在交互模式下执行,要么是执行py文件,还没有涉及对文件的操作。运行程序时...
    泷汰泱阅读 1,095评论 0 0
  • 一、列表推导式:用来创建列表 > 所谓的列表推导式,就是指的轻量级循环创建列表 格式:列表推导式的常见形式: my...
    MAVIS_42bf阅读 558评论 0 0
  • From: http://www.cnblogs.com/zhoujie/archive/2013/04/10/p...
    pzka158阅读 1,769评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,467评论 16 22