python提取文件名的5-6位_python提取文件名

首先声明本人初涉python,由于是自学,而且课余时间比较琐碎,所以打算分主次两条线。主的一条线是看python教程,但是这样实在枯燥,所以又有了次的一条线,就是写一些小程序练练手,只想总结下所得,记录自己学习的历程。

今天写的小程序是提取某文档目录下面的文件名,文档目录里有".txt"".jpg"".bmp"".rm"类型的文件,计划提取后缀名除".rm"以外的文件名并且去后缀,并且存到指定文本文档中,主要涉及到简单的模式匹配和文件操作。import os

filenames=os.listdir('d:\\test\\')

out=open('names.txt','w')

flag=[]

for name in filenames:

if '.txt'==name[-4:]:

filenames[filenames.index(name)]=name[:-4]

flag.append(True)

elif '.jpg'==name[-4:]:

filenames[filenames.index(name)]=name[:-4]

flag.append(True)

elif '.rm'==name[-3:]:

filenames[filenames.index(name)]=name[:-3]

flag.append(True)

else:

flag.append(False)

continue

for name in filenames:

if flag[filenames.index(name)]:

out.write(name+'\n')

out.close()

2中调用了OS中的函数,新建了filenames列表,存储原始文件名。涉及到路径问题,这里使用的是绝对路径,测试的文档目录在D盘。貌似有getcwd()方法能取得当前目录,但是我一般为了操作方便,还是会自己设置一个好操作的路径。

3中也可以同理把存储的文档设置为指定路径,'w'表示写操作。

4中新建了一个空列表,主要为了之后标记哪些是我们需要的文件名。

第一个循环主要是为了修改filenames列表,通过匹配filenames的每个子元素,需要的就去掉后缀存储到filenames列表,并在相应的flag列表中标记True;不需要的就标记False。这里的filenames.index(name)表示的是name这一项在filenames列表中的下标。name[start:end]则使用的是字符串分片,start和end分别表示起始下标和结束下标。熟悉java或者c应该知道数组中第一项下标为0,这里python是类似的,但是python中同时也规定了最后一项下标为-1,以此向前类推。所以name[-4:]表示的是name后4个字符,然后与我们需要的后缀名进行比对。

接着使用第二个循环结合flag列表进行文档写操作,最后关闭文档。python中比较蛋疼的是没有case语句,所以只能一遍遍使用if…else…。

其实到这里我已经想到又一个问题了,如果目录中还有目录肿么办?好吧,明天还要实习上班,今天先洗洗碎了,明天我再好好考虑下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【译】探索更轻量的Electron替代品来托管Blazor桌面应用程序

本文翻译自 ASP.NET 项目组的 Steve Sanderson 的博客,发表于 2019 年 11 月 1 日。Steve Sanderson 是 Blazor 最早的创造者。这篇文章发布后还有一篇后续,是介绍一个在本文提到的跨平台 webview 概念的落地项目 WebWindow ,我也会接着翻译过…

MATLAB-矩阵基本语法知识

数组创建 1.要创建每行包含四个元素的数组,请使用逗号 (,) 或空格分隔各元素。 这种数组为行向量。 要创建包含多行的矩阵,请使用分号分隔各行。 a [1 2 3; 4 5 6; 7 8 10] 2.创建矩阵的另一种方法是使用 ones、zeros 或 rand 等函数。例如&#x…

mysql 剔除不可见字符_不可见字符,Excel里最隐蔽的坑

小伙伴们好啊,我是流浪铁匠,今天为大家介绍的是excel数据整理时一类最常见的坑——不可见字符。从unichar函数对应的uincode字符集结果来说,excel大约有111万个字符,其中有不少字符的性质千奇百怪,由于unichar/unicode…

同为Chromium浏览器,Edge却被“特别关照”

谷歌会在 Microsoft Edge 用户访问 Chrome Web Store(Chrome 网上应用商店) 时发去一条通知提醒,建议用户切换到 Google Chrome 以安全地使用扩展程序,通知还提供了下载 Google Chrome 的链接。不过有趣的是,其他 Chro…

数据结构-查找-总结归纳知识点

//第八章 查找 //基于线性表的查找 // 1.顺序查找法 //思想:所给的关键字和表中元素的关键字逐个比较 分为:设置监视哨和不设监视哨 监视哨:r[0]防止越界 //2.折半查找法 要求:顺序储存结构(不能链表),按照关键字大小有序排列(正序和逆序) 思想:利用mid(highlow)/2(整数). …

噪声与振动控制工程手册_声学分享客噪声与振动控制篇大型隔振工程案例介绍...

第一期《声学分享客--噪声与振动控制篇》将于今日上午10:00~11:00,在线直播,欢迎各位上线交流。主讲人:苏宏兵报告内容:大型隔振工程案例介绍报告人介绍:苏宏兵,工学硕士&#xff0c…

微软推出全新的Windows 10系统图标

微软已开始通过 Fast Ring 向 Insider 用户推出新的 Windows 10 系统图标,这些新图标基于 Fluent 设计。更改从邮件和日历等程序开始,微软将陆续推出更多彩色图标。这些图标将在接下来的几个月中通过 Microsoft Store 的应用更新和 Windows 10 的发布预览…

python123读取文本文件并排序输出_Python按字段对文本文件排序

按某个字段对文本文件中的数据进行排序时遇到问题。以后可能会有多个字段。txt是数千行代码。我是python新手,所以我的代码可能有点混乱。例如,这是我将从中读取的文本文件:stuff123 1200 id-aaaa stuarttest.com322 1812 id-wwww machine-sw…

.NET Core开发实战(第9课:命令行配置提供程序)--学习笔记

09 | 命令行配置提供程序:最简单快捷的配置注入方法这一节讲解如何使用命令行参数来作为配置数据源命令行配置(提供程序的)支持三种格式的命令1、无前缀的 keyvalue 模式2、双中横线模式 --keyvalue 或 --key value3、正横杠模式 /keyvalue 或…

数据结构-第九章 内部排序-知识点总结1

第九章 内部排序 排序:重点在于对于记录的关键字进行排序,得到按关键字有序记录序列 分为: A.内部排序: 排序过程在内存中进行 B.外部排序: 待排序记录数据量过大,需要借助外部存储设备 排序的稳定性:排序后有相同关键字的记录顺序不变就是稳定的排序 插入类排序: 1…

python文本替换 数据库_在Python中使用ASCII文件中的注释查找/替换子...

在我正在研究的生物信息学项目中,我遇到了一些编码问题.基本上,我的任务是从数据库中提取基序序列并使用该信息来注释序列比对文件.对齐文件是纯文本,因此注释不会是任何复杂的,最好只是用对齐文件本身中的星号替换提取的序列.我有一个脚本扫描数据库文件,提取我需要的所有序列…

gRPC in ASP.NET Core 3.x - gRPC 消息定义

之前写了几篇关于 Protoco Buffer 的文章。gRPC in ASP.NET Core 3.x - gRPC 简介(1)gRPC in ASP.NET Core 3.x - gRPC 简介(2)当gRPC使用Protocol Buffer作为传输协议的时候,Protocol Buffer里所有的规则仍然都适用。…

哈希表创建哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构.typedef enum{ HASH_OK-icoding-数据结构-C

哈希表创建 typedef enum{HASH_OK,HASH_ERROR,HASH_ADDED,HASH_REPLACED_VALUE,HASH_ALREADY_ADDED,HASH_DELETED,HASH_NOT_FOUND, } HASH_RESULT; typedef struct __HashEntry HashEntry; struct __HashEntry{union{char *str_value;double dbl_value;int int_value;}…

10个用于C#.NET开发的基本调试工具

在调试软件时,工具非常重要。获取正确的工具,然后再调试时提取正确的信息。根据获取的正确的错误信息,可以找到问题的根源所在。找到问题根源所在,你就能够解决该错误了。你将看到我认为最基本的解决在C# .NET 中错误问题的工具的…

python面向对象语言_Python语言基础之——面向对象编程

1.类属性1)类属性:直接定义在类中的变量是类属性类属性的值不会因为对象不同而不一样2)对象属性通过 self.属性名 值 定义在init函数中的属性对象属性的值会因为对象不同而不一样2.对象属性的增删改查1.查对象.属性 - 获取对象中指定属性对应的值,属性不存在会报错…