Python文件操作 您所在的位置:网站首页 快速生成文件的软件叫什么名字 Python文件操作

Python文件操作

2024-06-29 19:54| 来源: 网络整理| 查看: 265

写在前面

今天在分类代码和整理文件时发现需要创建近100个文件夹,文件夹名呈规律性递增,如‘Question1-lv1’,‘Question2-lv1’, ‘Question(n)-lv1’, 这是问题数量的递增,然后便是问题等级的递增,Q1~Q30 为等级一类型,Q20~60为等级二,其余为等级三。在用鼠标点点点创建了5个文件以后,猛然醒悟:这样下去得创建到猴年马月,于是捣鼓了一下Python的文件操作。实现了一下功能:

批量生成文件批量删除批量改名将同一段内容批量写进文件中创建文件夹的同时再在该文件夹下创建子文件夹(循环往复) 技术不精,批量生成的文件夹的名字需要有规律哈哈 不管我们在哪个行业,都值得不断学习提高效率的办法,我将程序打包后发给从事文书工作的亲戚们也受到了不少好评: 原来创建文件还可以这样做,比人手快多了。 准备工作 Pycharm2017(懒于升级)500ml水

首先,Python对文件实现操作需要用到 os 模块

import os 思路过程

首先我欲创建的带名字的文件夹们如下: 在这里插入图片描述 这里只是节选一部分作为例子说明哈。我们现在来逐步拆解思路 Step1:找规律,发现只有数字在不断增大(6–14),其余并没有变化。先来for一下输出6到14这几个数,可能这一步看起来比较幼稚,但从最简单的知识点开始想起往往能带来不一样的灵感。

for i in range(6, 15): # range函数存在差一法则,即数学上的左闭右开区间 print(i, end=', ') # end= 参数实现不换行输出,用 逗号+空格 隔开

结果如图 在这里插入图片描述 既然是要创建文件夹,那就来看看创建单个文件夹的文件操作。 在这里插入图片描述 新单词:dir 我爱学英语 abbr. 目录(directory);方向(direction);用法(directione); 指示(direct) n. (Dir)人名;(塞)迪尔

新单词:path, mode, exit:

path: 路径mode:n. 模式;方式;风格;时尚 n. (Mode)人名;(德、英、法、乍、瑞典)莫德 这个mode直接理解为文件名就可以啦exit:存在

即括号内有这三个参数可以选择,这里我们舍去参数path,表示就是在当前路径下面创建,即Pycharm左侧工作栏可以看到的,exit_ok: 表示如果文件夹已经存在,那就什么都不做,这里我给了这个exit_ok,加粗,因为有个重点,如果重复创建相同名字的文件夹,则会报错

makedirs:做 dir 嘶,这里有复数,难道就这么简单就可以创建目录们了吗?

import os os.makedirs('这是要被创建的文件夹')

结果 在这里插入图片描述 只成功创建了一个,这个时候,我们在这个基础上再创建一个同名的文件夹,先是不添加 exit_ok=True 这个参数的 在这里插入图片描述 报错啦,牢记:同名文件夹已经存在,要么更换名字,要么添加exit参数 有点像 try–except—finally 捕获异常,先让程序运行再说,不要被一些细枝末节打扰卡住报错等等。 在这里插入图片描述 根据刚刚的思路热身我们可以发现,应该要有一个 “模板” ,也就是除了规律数字不同以外其他都相同的模板,然后将数字规律 逐个放入 文件夹名字中,也就是 新单词mode 这个参数里面。

构建模板

mode: Question()–lv2,中间的阔哈是要循环添加进去的数字 个人感觉精华全部在这里了,当时想着这么能够循环输出类似的效果 在这里插入图片描述 就在这时,灵光一闪,老早之前学习过 格式化输出 ,

dir_number = 1 content = f'Question{dir_number}' 比 .format() 要快的方法 content2 = 'Question{}'.format(dir_number) print(content) print(content2)

在这里插入图片描述 这里用了一个用了一个更快的方法哈哈,在引号前面加个f,便可以直接在花括号中放入想要被格式化的东西哈,如果对格式化还不是很理解的朋友 可以看看下面哈

age = 20 age = str(age) print("我今年" + age + '岁了。') print(f'我今年{age}岁了') print('我的年龄为{}'.format(age))

请看大屏幕 在这里插入图片描述 最短平快的 f与引号 这个组合,另外两个 隐约透露出一股小学生的气息 尤其是第一个

休息,喝500ml水

简短的休息过后,再次灵光一闪,这个 mode 不就是: "Question{}–lv2" 吗?,于是赶紧放进循环

mode = 'Quesiton{}--Lv2' for i in range(1,5): print(mode.format(i))

在这里插入图片描述 这里我没有用 f + 引号 这个组合,因为我的mode本来就已经有引号了

结合

好了,离大功告成只剩一步了,只需要将print改成 os.马克敌人是 就行了,当然也不要忘了加上 exit_ok=True 这个参数,养成提前预测到异常出现的地方是一个非常好的习惯哈

mode = 'Quesiton{}--lv2' for i in range(1,5): os.makedirs(mode.format(i), exist_ok=True)

大功告成,请看左栏 在这里插入图片描述 批量创建文本文档,csv文件等等都是同样的思路哈

喝了500毫升水后

还是猛地发现我文件夹的命名有点问题,lv 不够 Lv 美观,完蛋了,难道要全部删除创建好的再来一次吗?经过第一次猛然醒悟以后便有了信心,不如来个循环更改名字? 说干就干,我们先来试一下更改单个文件夹的名字

一开始左栏有一个文件夹的名字为 在这里插入图片描述

os.rename('这个是要被创建的文件夹', '改名吧小老弟')

在这里插入图片描述 好了,不难理解,新单词:rename 括号里面的第一个参数:旧文件夹的名字,第二个:新文件夹的名字

重点

看到这里,大家肯定已经轻松知道要使用格式化,循环填补数字来实现改名了。 因为有两个参数,自然而然就应该能想到应该要两个格式化 来试一下

mode = 'Quesiton{}--lv2' new_mode = 'Question{}--Lv2' for i in range(1,5): os.rename(mode.format(i), new_mode.format(i))

在这里插入图片描述 左栏便蹭蹭的变化了。

同理,创建5个文本文档搞一下 mode = '我是第{}个文件夹啊' for i in range(1,5): with open(mode.format(i) + '.txt', 'w', encoding='utf-8') as f: pass

这里就不一一解释啦,pass为占位语句,想不出写什么,但是又要保持程序完整性,所以就先占个位置

大功告成,请看右边

在这里插入图片描述

批量写入相同的内容 content = '这个东西得想办法写进刚刚创建的五个文本文档(记事本)里面' 重点

写内容的时候应该改为追加写,即a:append,否则会覆盖掉之前的内容,不过因为这五个文件里面本来什么都没有所以这里可以不用管,但是为了保持良好的习惯还是 a它一下吧

content = '这个东西得想办法写进刚刚创建的五个文本文档(记事本)里面' mode = '我是第{}个文件夹啊' for i in range(1,5): with open(mode.format(i) + '.txt', 'a', encoding='utf-8') as f: f.write(content)

覆盖写和追加写绝对是一个超级大坑,在两个不同的py文件也可以跨区域影响 坑点可以见我另一篇博客 https://blog.csdn.net/weixin_43329700/article/details/86768422 在这里插入图片描述 它进去了!!,另外五个文件也是这样。

写在后面

这篇文章只展示了非常小的一部分文件操作,还有各种骚操作有待发掘,望对大家有帮助,有什么更好的方法记得留言分享!PS:养成边编程边喝水的习惯很重要



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有