Python | bash | 功能 |
---|
os.mkdir | mkdir | 创建单个文件夹 |
os.makedirs(exist_ok=True) | mkdir -p | 创建多个文件夹 |
os.rmdir | “rm -d” or “rmdir” | 删除单个空文件夹 |
os.removedirs | rmdir -p | 删除多个空文件夹 |
shutil.rmtree | rm -r | 删除某个文件夹和其中全部内容 |
>>> def list_files(startpath):
... '''list content in dir like a tree
... adpated from https://stackoverflow.com/questions/9727673/list-directory-tree-structure-in-python'''
... import os
... for root, dirs, files in os.walk(startpath):
... level = root.replace(startpath, '').count(os.sep)
... indent = '-' * 4 * (level)
... print('{}{}/'.format(indent, os.path.basename(root)))
... subindent = '-' * 4 * (level + 1)
... for f in files:
... print('{}{}'.format(subindent, f))
...
>>> import os
>>> list_files('.')
./
>>> os.mkdir('foo')
>>> list_files('.')
./
----foo/
>>> os.makedirs('foo/bar/baz')
>>> list_files('.')
./
----foo/
--------bar/
------------baz/
>>> os.makedirs('fop/bar/baz')
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----foo/
--------bar/
------------baz/
>>> open('fop/bar/baz/tmp.txt', 'a').close()
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----------------tmp.txt
----foo/
--------bar/
------------baz/
>>> os.rmdir('foo/bar/baz')
>>>
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----------------tmp.txt
----foo/
--------bar/
>>> os.removedirs('foo/bar')
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----------------tmp.txt
>>> os.rmdir('fop')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 66] Directory not empty: 'fop'
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----------------tmp.txt
>>> os.removedirs('fop/bar/baz')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/chrww/anaconda3/lib/python3.7/os.py", line 239, in removedirs
rmdir(name)
OSError: [Errno 66] Directory not empty: 'fop/bar/baz'
>>> list_files('.')
./
----fop/
--------bar/
------------baz/
----------------tmp.txt
>>> import shutil
>>> shutil.rmtree('fop')
>>> list_files('.')
./
>>>
ouayas-MacBook-Air:test chrww$ tree
.
0 directories, 0 files
ouayas-MacBook-Air:test chrww$ mkdir foo
ouayas-MacBook-Air:test chrww$ tree
.
└── foo
1 directory, 0 files
ouayas-MacBook-Air:test chrww$ mkdir -p foo/bar/baz
ouayas-MacBook-Air:test chrww$ tree
.
└── foo
└── bar
└── baz
3 directories, 0 files
ouayas-MacBook-Air:test chrww$ mkdir -p fop/bar/baz
ouayas-MacBook-Air:test chrww$ tree
.
├── foo
│ └── bar
│ └── baz
└── fop
└── bar
└── baz
6 directories, 0 files
ouayas-MacBook-Air:test chrww$ touch fop/bar/baz/tmp.txt
ouayas-MacBook-Air:test chrww$ tree
.
├── foo
│ └── bar
│ └── baz
└── fop
└── bar
└── baz
└── tmp.txt
6 directories, 1 file
ouayas-MacBook-Air:test chrww$ rm -d foo/bar/baz
ouayas-MacBook-Air:test chrww$ tree
.
├── foo
│ └── bar
└── fop
└── bar
└── baz
└── tmp.txt
5 directories, 1 file
ouayas-MacBook-Air:test chrww$ mkdir -p foo/bar/baz
ouayas-MacBook-Air:test chrww$ tree
.
├── foo
│ └── bar
│ └── baz
└── fop
└── bar
└── baz
└── tmp.txt
6 directories, 1 file
ouayas-MacBook-Air:test chrww$ rmdir foo/bar/baz
ouayas-MacBook-Air:test chrww$ tree
.
├── foo
│ └── bar
└── fop
└── bar
└── baz
└── tmp.txt
5 directories, 1 file
ouayas-MacBook-Air:test chrww$ rmdir -p foo/bar
ouayas-MacBook-Air:test chrww$ tree
.
└── fop
└── bar
└── baz
└── tmp.txt
3 directories, 1 file
ouayas-MacBook-Air:test chrww$ rmdir -p foo/bar/baz
rmdir: foo/bar/baz: No such file or directory
ouayas-MacBook-Air:test chrww$ tree
.
└── fop
└── bar
└── baz
└── tmp.txt
3 directories, 1 file
ouayas-MacBook-Air:test chrww$ rmdir fop
rmdir: fop: Directory not empty
ouayas-MacBook-Air:test chrww$ tree
.
└── fop
└── bar
└── baz
└── tmp.txt
3 directories, 1 file
ouayas-MacBook-Air:test chrww$ rmdir -p fop/bar/baz
rmdir: fop/bar/baz: Directory not empty
ouayas-MacBook-Air:test chrww$ tree
.
└── fop
└── bar
└── baz
└── tmp.txt
3 directories, 1 file
ouayas-MacBook-Air:test chrww$ rm -r fop
ouayas-MacBook-Air:test chrww$ tree
.
0 directories, 0 files
ouayas-MacBook-Air:test chrww$