IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【原创】Python创建list文件 -> 正文阅读

[数据结构与算法]【原创】Python创建list文件

引言

最近老师鼓励写脚本,仿真自动化,所以就立马向大师兄要了一些资源,学了半小时Python,迫不及待想写一些自己的脚本。modelsim仿真自动化需要写.do文件,vlog编译文件一个一个编译太麻烦,所以需要生成文件,把需要编译的文件路径写进生成的文件中。老师用C写了100多行代码实现了上面的功能,所以我想用Python写一个简单的脚本实现上面的功能。

代码块

#==================================================================
#作者:    stone
#时间:    2021.10.1           
#功能描述:生成特定文件类型的list文件,路径可以为相对路径或绝对路径 
#==================================================================

import os
#==================================================================
#                     可修改参数
#==================================================================
filelist = 'filelist'   #生成.f的名字
type_1   = True        #TRUE:绝对路径    FALSE:想对路径
cnt      = 2            #相对级数
file_end = '.f'         #生成文件的后缀  
find_type= '.v'         #生成list的文件类型
bar_type = '\\'         #斜杠方向
#==================================================================

filedir = os.getcwd()   #当前.py文件路径
stone = open(filelist+file_end,'w')  #建立文件

for root,dirs,files in os.walk(filedir): #遍历
    for name in files:
        if name.endswith(find_type):
            if type_1:#绝对路径
                stone.write(root +bar_type+ name + '\n')  #写路径
            else:#相对路径
                stone.write(root.replace(filedir + bar_type,('..'+bar_type)*cnt)+bar_type+ name + '\n')

stone.close()#关闭文件

要说明的一点是,这里的相对路径是相对.do文件的路径,相对路径也是写死的,也就是说.py文件和.do文件的目录级数是一定的,我这里是差了2级,所以×2,如果级数变了,需要手动改cnt 参数。我也想过不写死的方法,利用relpath函数从.do文件所在目录开始计算相对路径,也实现了。但是发现每个人的.do路径都不一样,移植性太差,也想过遍历查找.do文件路径,但是这样只能有一个.do文件,无论怎么做都相当于画蛇添足,没有必要。综合考虑还是采用这种方法。

遍历.v文件也是从当前.py目录开始遍历,也就是说为了能够遍历所有的.v文件,需要把这个脚本放在和存放.v文件的文件夹同级目录下。代码逻辑很简单,而且有注释,所以就不怎么讲了。因为刚学Python,所以下面写一下用到的函数,巩固一下。

Python语句

import:导入命令,可以导入模块,也可以导入,本人看来相当于C的include。模块相当于实现某一个功能的.py文件。而包相当于模块和子包的集合,模块和包就本人看来相当于C的头文件。

os:这个模块提供了很多与操作系统相关的函数,执行os模块的函数相当于进行了操作系统命令,执行函数:os.函数名。里面函数有很多,我也没用到多少,所以就简单讲一下用到的函数。
os.getcwd():获得当前.py文件的路径,没有参数,返回的路径是绝对路径。
os.walk(path):这个函数厉害了,功能就是遍历当前目录下的所有文件。返回三个参数:
root:当前所在目录
dirs:当前目录下的文件夹
files:当前目录下的文件,有多个文件会组成一个列表
这个函数会一层一层遍历下去,也就是说files永远是文件,所以只需要判断files中是否有自己想要找的文件类型,文件类型通过**endswith()**来判断。

endswith():判断字符串的后缀是不是和参数一样,一样的话返回True,否则返回False,用这种方法判断当前文件是不是要找到文件类型。

open():用于打开文件,并设置读写方式,这里只用到了w,表示只写模式。有好多参数,这里就不介绍了。没有文件就建立这个文件,并返回这个文件的句柄。

write():用于写文件,字符串直接相连可以用 +号

replace():用于字符串替换。root.replace(old,new):表示在root这个字符串中把old字符串替换成new这个字符串


本人Python刚学,所以上面函数肯定理解的不到位,所以如果想深入了解上面的函数建议大家去这个网站https://www.runoob.com/python3/python3-os-path.html,也请大家积极批评!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:05:02  更:2021-10-04 13:06:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:40:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码