forked from ethan-funny/explore-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathos.md
More file actions
137 lines (111 loc) · 4.01 KB
/
Copy pathos.md
File metadata and controls
137 lines (111 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# os 模块
Python 的 os 模块封装了常见的文件和目录操作,本文只列出部分常用的方法,更多的方法可以查看[官方文档](https://docs.python.org/3/library/os.path.html)。
下面是部分常见的用法:
| 方法 | 说明 |
| :-: | :-: |
| os.mkdir | 创建目录 |
| os.rmdir | 删除目录 |
| os.rename | 重命名 |
| os.remove | 删除文件 |
| os.getcwd | 获取当前工作路径 |
| os.walk | 遍历目录 |
| os.path.join | 连接目录与文件名 |
| os.path.split | 分割文件名与目录 |
| os.path.abspath | 获取绝对路径 |
| os.path.dirname | 获取路径 |
| os.path.basename | 获取文件名或文件夹名 |
| os.path.splitext | 分离文件名与扩展名 |
| os.path.isfile | 判断给出的路径是否是一个文件 |
| os.path.isdir | 判断给出的路径是否是一个目录 |
# 例子
后文的例子以下面的目录结构为参考,工作目录为 `/Users/ethan/coding/python`。
```
Users/ethan
└── coding
└── python
├── hello.py - 文件
└── web - 目录
```
看看例子:
- os.path.abspath:获取文件或目录的绝对路径
```python
$ pwd
/Users/ethan/coding/python
$ python
>>> import os # 记得导入 os 模块
>>> os.path.abspath('hello.py')
'/Users/ethan/coding/python/hello.py'
>>> os.path.abspath('web')
'/Users/ethan/coding/python/web'
>>> os.path.abspath('.') # 当前目录的绝对路径
'/Users/ethan/coding/python'
```
- os.path.dirname:获取文件或文件夹的路径
```python
>>> os.path.dirname('/Users/ethan/coding/python/hello.py')
'/Users/ethan/coding/python'
>>> os.path.dirname('/Users/ethan/coding/python/')
'/Users/ethan/coding/python'
>>> os.path.dirname('/Users/ethan/coding/python')
'/Users/ethan/coding'
```
- os.path.basename:获取文件名或文件夹名
```python
>>> os.path.basename('/Users/ethan/coding/python/hello.py')
'hello.py'
>>> os.path.basename('/Users/ethan/coding/python/')
''
>>> os.path.basename('/Users/ethan/coding/python')
'python'
```
- os.path.splitext:分离文件名与扩展名
```python
>>> os.path.splitext('/Users/ethan/coding/python/hello.py')
('/Users/ethan/coding/python/hello', '.py')
>>> os.path.splitext('/Users/ethan/coding/python')
('/Users/ethan/coding/python', '')
>>> os.path.splitext('/Users/ethan/coding/python/')
('/Users/ethan/coding/python/', '')
```
- os.path.split:分离目录与文件名
```python
>>> os.path.split('/Users/ethan/coding/python/hello.py')
('/Users/ethan/coding/python', 'hello.py')
>>> os.path.split('/Users/ethan/coding/python/')
('/Users/ethan/coding/python', '')
>>> os.path.split('/Users/ethan/coding/python')
('/Users/ethan/coding', 'python')
```
- os.path.isfile/os.path.isdir
```python
>>> os.path.isfile('/Users/ethan/coding/python/hello.py')
True
>>> os.path.isdir('/Users/ethan/coding/python/')
True
>>> os.path.isdir('/Users/ethan/coding/python')
True
>>> os.path.isdir('/Users/ethan/coding/python/hello.py')
False
```
- os.walk
os.walk 是遍历目录常用的模块,它返回一个包含 3 个元素的元祖:(dirpath, dirnames, filenames)。dirpath 是以 string 字符串形式返回该目录下所有的绝对路径;dirnames 是以列表 list 形式返回每一个绝对路径下的文件夹名字;filesnames 是以列表 list 形式返回该路径下所有文件名字。
```python
>>> for root, dirs, files in os.walk('/Users/ethan/coding'):
... print root
... print dirs
... print files
...
/Users/ethan/coding
['python']
[]
/Users/ethan/coding/python
['web2']
['hello.py']
/Users/ethan/coding/python/web2
[]
[]
```
# 参考资料
- [关于python文件操作 - Rollen Holt](http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html)
- [操作文件和目录 - 廖雪峰的官方网站](http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868321590543ff305fb9f9949f08d760883cc243812000)
- [Python os.walk的用法与举例](http://blog.csdn.net/bagboy_taobao_com/article/details/893)