1
0
mirror of https://github.com/wting/autojump synced 2024-10-27 20:34:07 +00:00
wting_autojump/bin/utils.py

70 lines
1.5 KiB
Python
Raw Normal View History

2013-12-16 17:20:40 +00:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
2013-12-16 17:20:40 +00:00
import errno
import os
2013-12-16 17:20:40 +00:00
import platform
import shutil
2013-12-16 17:20:40 +00:00
import sys
def create_dir(path):
"""Creates a directory atomically."""
try:
os.makedirs(path)
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
2013-12-16 21:39:49 +00:00
def decode(string):
"""Converts byte string to Unicode string."""
if is_python2():
return string.decode('utf-8', errors='replace')
return string
def encode(string):
"""Converts Unicode string to byte string."""
if is_python2():
return string.encode('utf-8', errors='replace')
return string
def encode_local(string, encoding=None):
"""Converts string into local filesystem encoding."""
if is_python2():
return decode(string).encode(encoding or sys.getfilesystemencoding())
return string
def is_python2():
return sys.version_info[0] == 2
2013-12-16 17:20:40 +00:00
def is_linux():
return platform.system() == 'Linux'
def is_osx():
return platform.system() == 'Darwin'
def is_windows():
return platform.system() == 'Windows'
def move_file(src, dst):
"""
Atomically move file.
Windows does not allow for atomic file renaming (which is used by
os.rename / shutil.move) so destination paths must first be deleted.
"""
if is_windows() and os.path.exists(dst):
# raises exception if file is in use on Windows
os.remove(dst)
shutil.move(src, dst)