redballoon 发表于 2023-3-17 16:34

纯净版 - OS模块的学习笔记

本帖最后由 redballoon 于 2023-3-17 17:25 编辑

# OS 模块的使用

## 导入模块

```python
import os
# 避免使用的方法 from os import * 因为这会与内置函数open() 起冲突,从而引起意料之外的结果。
```

## os模块的常用操作

+ 1.获取当前工作的路径

```python
print(os.getcwd())
# out:D:\pythonProjects\pythonBasic\os模块
```

+ 2.指定路径为当前工作路径

```python
os.chdir('D:/pythonProjects')
print(os.getcwd())
# out: D:\pythonProjects
```

+ 3.创建一个新的文件夹,不能创建多层级的文件夹(目录)

```python
# 当文件已存在时,无法创建该文件。
os.mkdir('test1')
```

+ 4.创建多层级文件夹(目录)

```python
os.makedirs('cdd/dd')
```

+ 5.删除空文件夹

```python
# 删除空文件夹 如果文件夹不是空的就会报错:目录不是空的。
os.rmdir('test')
```

+ 6.递归删除目录

```python
# 工作方式类似于 rmdir(),不同之处在于,如果成功删除了末尾一级目录,removedirs() 会尝试依次删除 path 中提到的每个父目录,直到抛出错误为止(但该错误会被忽略,因为这通常表示父目录不是空目录)
os.removedirs(os.path.join('cdd', 'dd'))
```

+ 7.删除文件

```python
os.remove('dd.txt')
```

+ 8.文件或路径(文件夹)重命名和移动文件夹

```python
os.rename(src, dst)
# src 原路径,dst修改后的命名
# 只能重命名原路径src 最后的路径或文件的名字,中间路径都必须要存在,否则就会抛出FileNotFoundError
# os.rename('test.txt', 'demo.txt')# 重命名
# os.rename(os.path.join('test', 'test.txt'), 'test.txt')# 移动
```

## os.path模块

```python
os.path中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理
```

+ 9.返回路径 path 的绝对路径

```python
print(os.path.abspath('demo.txt'))
# out: D:\pythonProjects\pythonBasic\os模块\demo.txt
```

+ 10.判断该路径或文件是否存在 (Bool)

```python
print(os.path.exists('demo.txt'))
# out: True
```

+ 11.获取文件的最近访问时间

```python
# os.path.getatime(path)返回 path 所指文件的最近访问时间(浮点型秒数)即time时间戳
print(os.path.getatime('demo.txt'))
# out: 1678982202.702731

t = os.path.getatime('demo.txt')
sys_time = time.localtime(t)
formatter_time = time.strftime('%Y-%m-%d %H:%M:%S', sys_time)
print(formatter_time)
# out: 2023-03-17 16:04:12
```

+ 12.获取文件的创建时间

```python
# os.path.getctime(path) 在windos下获取文件的创建时间,在Unix返回的是最后的修改时间
print(os.path.getctime('demo.txt'))
# out: 1678981495.357391

t = os.path.getctime('demo.txt')
tupTime = time.localtime(t)# 将时间戳转换成本地时间
format_time = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)# 转换成对应的时间格式
print(format_time)
# out: 2023-03-16 23:44:55
```

+ 13.获取文件的大小

```python
# os.path.getsize(path) 获取文件的大小
print(os.path.getsize('demo.txt'))
# out: 127 (字节)
```

+ 14.os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组

```python
print(os.path.split(os.path.join('test', 'test.txt')))
# out: ('test', 'test.txt')
print(os.path.split('test/test2/demo3.txt'))
# out: ('test/test2', 'demo3.txt')
```

+ 15.判断路径是否为文件返回布尔值

```python
# os.path.isfile() 判断路径是否为文件 返回布尔值
print(os.path.isfile('demo.txt'))
# out: True
```

+ 16.判断路径是否为目录返回布尔值

```python
# os.path.isdir() 判断路径是否为目录 返回布尔值
print(os.path.isdir('test'))
# out: True
```

+ 17.把目录和文件名合成一个路径 join

```python
# os.path.join(path1[, path2[, ...]]) 将传入的路径进行拼接
print(os.path.join('test', 'test2', 'xxx.txt'))
# out: test\test2\xxx.txt
```

+ 18.递归查找目录下所有的文件夹和文件

```python
# os.walk(path, visit, arg) 会递归的寻找路径下所有子文件夹和文件
print(os.walk('test'))
# out: <generator object walk at 0x0000028FB505EC10>返回的是一个生成器 (dirpath, dirnames, filenames)

# 这里设置个目录树
'''
|--test
    |--test2
      |--demo3.txt
    |--demo2.txt
'''
for path, dirname, filename in os.walk(r'D:\pythonProjects\pythonBasic\os模块\test'):
    print(path, dirname, filename)
# out: D:\pythonProjects\pythonBasic\os模块\test ['test2'] ['demo2.txt']
'''这里第一个返回结果就像在当前目录下(D:\pythonProjects\pythonBasic\os模块\test)点开之后看到的所有文件夹和文件'''
# out: D:\pythonProjects\pythonBasic\os模块\test\test2 [] ['demo3.txt']
'''第二结果就像是继续点开文件夹看看还有没有文件夹和文件,有文件夹就继续往下点开'''

```

ninng 发表于 2023-3-17 21:07

向大佬学习

ledi 发表于 2023-3-21 19:19

感谢大佬分享的学习笔记&#128525;
页: [1]
查看完整版本: 纯净版 - OS模块的学习笔记