### Python常用模块函数代码汇总解析
#### 一、文件和目录操作
在Python中,处理文件和目录操作通常涉及到多个内置模块,如`os`和`os.path`。这些模块提供了丰富的API来处理文件和目录。
- **创建、删除、修改、拼接路径**
- `os.makedirs(path, exist_ok=True)`:递归地创建多级目录,如果目录已存在,`exist_ok=True`可避免抛出异常。
- `os.rmdir(path)`:删除空目录。
- `os.rename(src, dst)`:重命名或移动文件/目录。
- `os.path.join(path1, path2, ...)`:将一个或多个路径名称组合起来。
- `os.getcwd()`:获取当前工作目录。
- **遍历目录**
- `os.listdir(path='.')`:列出指定目录中的文件和子目录名。
- `os.walk(top, topdown=True)`:生成目录树中的文件名,从top开始。
- **获取文件属性**
- `os.path.getsize(path)`:获取文件大小(字节数)。
- `os.path.getmtime(path)`:获取文件最后修改时间戳。
- `os.path.exists(path)`:检查路径是否有效。
#### 二、日期和时间
Python中的日期和时间处理主要依赖于`time`、`datetime`和`calendar`这三个模块。
- **获取时间戳**
- `time.time()`:获取从1970年1月1日0时0分0秒到现在的总秒数。
- 示例:
```python
import time
before = time.time()
# 执行某段代码
after = time.time()
print(f"耗时 {after - before} 秒")
```
- **获取当前时间**
- `datetime.datetime.now()`:返回当前日期和时间。
- 示例:
```python
from datetime import datetime
print(datetime.now()) # 输出:2023-09-01 10:30:00.123456
```
- **格式化日期时间**
- `datetime.now().strftime(format)`:根据指定格式格式化当前日期时间。
- `time.strftime(format, time_tuple)`:将时间元组转换为指定格式的字符串。
- 示例:
```python
from datetime import datetime
import time
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S')) # 输出:2023-09-01 10:30:00
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # 输出:2023-09-01 10:30:00
```
#### 三、Python程序中调用其他程序
在Python中可以通过多种方式来调用外部程序。
- **使用`os`模块**
- `os.system(command)`:执行一个命令字符串,等待命令完成并返回退出状态。
- 示例:
```python
import os
cmd = 'wget http://mirrors.sohu.com/nginx/nginx-1.13.9.zip'
os.system(cmd)
```
注意:这种方式不建议用于复杂场景,因为安全性较差且无法获取输出结果。
- **使用`subprocess`模块**
- `subprocess.Popen(args, stdin=None, stdout=None, stderr=None, shell=False)`
- 参数说明:
- `args`:要执行的命令。
- `stdin/stdout/stderr`:设置标准输入/输出/错误流。
- `shell`:如果为True,则通过shell执行命令;否则,直接调用程序。
- 示例:
```python
from subprocess import Popen, PIPE
proc = Popen('du -sh *', stdout=PIPE, stderr=PIPE, shell=True)
out, err = proc.communicate()
out = out.decode('utf-8')
print(out.split('\n')[0])
```
#### 四、多线程
在Python中,可以利用`threading`模块轻松实现多线程编程。
- **基础用法**
- 创建Thread对象:
```python
import threading
def worker():
print("Worker")
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
for t in threads:
t.join()
```
- 如果是自动化测试用例编写,可以考虑使用`pytest`框架,它提供了内置的支持以简化多线程测试的编写过程。
以上介绍了Python中几个常用模块的主要功能及其使用方法,这对于日常开发和维护Python项目都是非常有帮助的。希望这些内容能对您的学习和工作提供有价值的参考。