mirror of https://github.com/flaggo/pydu.git
commit
2164c67e4f
38
pydu/file.py
38
pydu/file.py
|
@ -4,17 +4,33 @@ import shutil
|
|||
|
||||
|
||||
# todo tests and docs
|
||||
def makedirs(path, mode=0o755, ignore_errors=False, exist_ok=True):
|
||||
def makedirs(path, mode=0o755, ignore_errors=False, exist_ok=False):
|
||||
"""
|
||||
Create a leaf directory and all intermediate ones.
|
||||
|
||||
Based on os.makedirs, but also supports ignore_errors which will
|
||||
ignore all errors raised by os.makedirs.
|
||||
"""
|
||||
if exist_ok and os.path.exists(path):
|
||||
return
|
||||
try:
|
||||
os.makedirs(path, mode)
|
||||
except Exception:
|
||||
if not ignore_errors:
|
||||
if not exist_ok:
|
||||
raise OSError('{} is exist'.format(path))
|
||||
raise OSError('Create dir: {} error.')
|
||||
|
||||
|
||||
def remove(path, ignore_errors=False, onerror=None):
|
||||
"""
|
||||
Remove a file or directory.
|
||||
|
||||
If ignore_errors is set, errors are ignored; otherwise, if onerror
|
||||
is set, it is called to handle the error with arguments (func,
|
||||
path, exc_info) where func is platform and implementation dependent;
|
||||
path is the argument to that function that caused it to fail; and
|
||||
exc_info is a tuple returned by sys.exc_info(). If ignore_errors
|
||||
is False and onerror is None, an exception is raised.
|
||||
"""
|
||||
if ignore_errors:
|
||||
def onerror(*args):
|
||||
pass
|
||||
|
@ -32,11 +48,27 @@ def remove(path, ignore_errors=False, onerror=None):
|
|||
|
||||
|
||||
def removes(paths, ignore_errors=False, onerror=None):
|
||||
"""
|
||||
Remove a list of file and/or directory.
|
||||
|
||||
If ignore_errors is set, errors are ignored; otherwise, if onerror
|
||||
is set, it is called to handle the error with arguments (func,
|
||||
path, exc_info) where func is platform and implementation dependent;
|
||||
path is the argument to that function that caused it to fail; and
|
||||
exc_info is a tuple returned by sys.exc_info(). If ignore_errors
|
||||
is False and onerror is None, an exception is raised.
|
||||
"""
|
||||
for path in paths:
|
||||
remove(path, ignore_errors=ignore_errors, onerror=onerror)
|
||||
|
||||
|
||||
def open_file(path, mode='wb+', buffer_size=-1, ignore_errors=False):
|
||||
"""
|
||||
Open a file, defualt mode 'wb+'.
|
||||
|
||||
If path not exists, it will be created automatically.
|
||||
If ignore_errors is set, errors are ignored.
|
||||
"""
|
||||
f = None
|
||||
try:
|
||||
if path and not os.path.isdir(path):
|
||||
|
|
|
@ -4,16 +4,19 @@ import pytest
|
|||
|
||||
|
||||
class Testmakedirs():
|
||||
def test_makedirs(self,tmpdir):
|
||||
def test_makedirs(self, tmpdir):
|
||||
path = str(tmpdir.join('test'))
|
||||
makedirs(path)
|
||||
assert os.path.exists(path)
|
||||
|
||||
def test_makedirs_with_exists_path(self,tmpdir):
|
||||
def test_makedirs_with_exists_path(self, tmpdir):
|
||||
path = str(tmpdir.join('test'))
|
||||
makedirs(path)
|
||||
with pytest.raises(Exception) as e_info:
|
||||
makedirs(path, exist_ok=True)
|
||||
|
||||
makedirs(path, exist_ok=True)
|
||||
|
||||
with pytest.raises(Exception):
|
||||
makedirs(path, exist_ok=False)
|
||||
|
||||
def test_makedirs_with_ignore_error(self, tmpdir):
|
||||
path = str(tmpdir.join('test'))
|
||||
|
@ -23,8 +26,8 @@ class Testmakedirs():
|
|||
def test_makedirs_without_ignore_error(self, tmpdir):
|
||||
path = str(tmpdir.join('test'))
|
||||
makedirs(path)
|
||||
with pytest.raises(Exception) as e_info:
|
||||
makedirs(path, ignore_errors=False)
|
||||
with pytest.raises(Exception):
|
||||
makedirs(path, ignore_errors=False, exist_ok=False)
|
||||
|
||||
def test_makedirs_with_mutl_dirs(self, tmpdir):
|
||||
path = str(tmpdir.join('test/test'))
|
||||
|
|
Loading…
Reference in New Issue