网站首页 > 技术文章 正文
注:上个篇由于不熟悉头条号编辑器,导致示例代码丢失。现在全部以图片的形式加回。
有同学问了个问题:在python里如何复制、删除、重命名文件?
有个同学知道os.system(),就回答说:
os.system('cp a.v b.v')
os.system('rm b.v')
os.system('mv a.v b.v')
那如果是windows系统呢?
有个熟悉DOS命令的同学回答说:
os.system('copy a.v b.v')
os.system('del b.v')
os.system('rename a.v b.v')
又有个同学找到一个“通用的”方法说,windows上可以安装类unix小工具,然后继续用linux的方法。
其实python已经为我们考虑过系统兼容的问题了。在python的官方网站上有以下的描述:
Runs anywhere, including Mac OS X, Windows, Linux, and Unix, with unofficial builds also available for Android and iOS.
所以,在开始更深入的学习之前,我们有必要先来学一下基本的与操作系统(os)、文件(sys)、shell(shutil)打交道的方式。os, sys, shutil这三个模块/包是python安装时自带的,基本上能覆盖我们的需求。
研究os、sys、shutil提供了哪些函数
我们先用dir()来看看这三个模块/包提供了哪些函数,然后挑一些常用的函数介绍下。import os模块后,用dir(os)来查看os提供了哪些函数,如下(常用的用蓝色标出):
sys和shutil就留给同学们自己做实验了。
把研究结果整理如下
我们把函数名字看起来眼熟的整理如下:
只列个函数名字有什么用?怎么没有用法介绍?函数太多,我不想也不太实际为每个函数都写一段完整的用法说明和使用示例。我还是来介绍下怎么查帮助文档吧。
搞懂每个函数的用途和用法
举个例子,如果你想看看os.getcwd和os.popen的用法,你可以在terminal里如下操作:
还不懂怎么办?
- python的书
- 百度、bing、google(如果你在国外、或者你有VPN/VPS)
- 知乎、博客
- github上找些开源代码参考
- 身边的同学、同事、朋友
- 微信群
当然还可以阅读本号ExASIC的《Python在芯片中的应用》系列文章。
疑难问题辨析
os.mkdir与os.makedirs
mkdir创建单个目录,而makedirs创建一串目录,类似shell命令make -p。
os.path.curdir、os.path.abspath、os.path.dirname、os.path.basename
curdir是属性,不是函数,返回一个字符串‘.’abspath返回完整的路径。dirname和basename的输入参数是完整路径,basename返回文件名,dirname返回文件名前面的路径。
所以说,dirname和basename并不会判断文件或路径是否真实存在,只是对提供的字符串做处理。
os.path.isdir、os.path.isfile、os.path.islink
这几个函数不只是字符串处理哦,文件或目录不存在时会报错。从名字上就可以看出它们的功能,判断是否是文件、目录、软链接,返回True和False。
os.path.split、os.path.splitext、os.path.join
split是把目录和文件分开,splitext是把文件名和后缀名分开,join把目录、文件用/组合成路径。
os.path.getsize、os.path.getatime、os.path.getctime、os.path.getmtime
os.path.getsize获取文件的大小。os.path.getatime最后一次access时间,可以是创建、修改、读等。os.path.getctime最后一次change时间,可以是修改、改变权限、改变所有者等。os.path.getmtime最后一次modify时间,创建、修改等。文件的更多信息可以通过os.stat()来获取。
写个实用的脚本/代码
比如,我们在仿真时,需要根据testcase名字建立一个仿真目录。具体事项如下:
- 从命令行获取testcase名
- 确认项目根目录,获取当前目录的相对路径
- 用find命令获取testcase的类别
- 如果类别不存在,则新建类别目录,并产生Makefile
- 进入类别目录里
- 如果testcase目录不存在,则新建,并创建仿真脚本的软链接和Makefile
- 完毕后,打印成功提示
参考脚本:
猜你喜欢
- 2025-05-14 Python中的模块 (Module)和包 (Package)
- 2025-05-14 python中的模块、库、包有什么区别?
- 2025-05-14 用Python快速创建N个Excel文件
- 2025-05-14 Python NumPy库的安装和使用
- 2025-05-14 uv入门:下一代 Python 包管理器
- 2025-05-14 python 中安装lxml包出现的问题及技术解答
- 2025-05-14 Linux和Windows下:Python Crypto模块安装方式区别
- 2025-05-14 Python + Pycrypto 加密模块的正确使用姿势
- 2025-05-14 python进阶实战:如何使用自定义模块(包)?
- 05-27程序员用 Python 爬取抖音高颜值美女
- 05-27YOLO v3、FaceNet和SVM的人脸检测识别系统源码(python)分享
- 05-27「工具推荐」世界上最简单的人脸识别库 44.7 star
- 05-27开源人脸识别系统源码推荐
- 05-27Go 人脸识别教程
- 05-27Python 深度学习之人脸识别(yolo+facenet)
- 05-27简单的Py人脸识别
- 05-27Python编程 - 基于OpenCV实现人脸识别(实践篇)爬虫+人脸识别
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 82℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)