Various utility functions for working with files.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
"""Various utility functions used by this plugin"""
import tempfile
from codecs import open as fopen
from os import makedirs, path, remove
from os.path import isfile, isdir, dirname
def get_temp_file_path():
"""Gets the full path to the temp file"""
tf = tempfile.NamedTemporaryFile(mode='wb', delete=False)
return tf.name
def save_text_to_file(text, file_path):
"""Saves the given text to a file at the specified path"""
handle = fopen(file_path, mode="w", encoding="utf-8")
handle.write(text)
handle.close()
def save_text_to_temp_file(text):
"""Saves the given text to a temporary file"""
temp_file_path = get_temp_file_path()
save_text_to_file(text, temp_file_path)
return temp_file_path
def read_text_from_file(file_path, default_contents=None):
"""Reads the text from a file if it exists; if it doens't,
some default contents are returned"""
if isfile(file_path):
handle = fopen(file_path, mode="r", encoding="utf-8")
text = handle.read()
handle.close()
return text
return default_contents
def ensure_file(file_path, default_contents=None):
"""Ensures a file exists; if it doesn't, one is created with some contents"""
if not isdir(dirname(file_path)):
makedirs(dirname(file_path))
if not isfile(file_path):
handle = fopen(file_path, mode="w", encoding="utf-8")
handle.write(default_contents)
handle.close()
return file_path
def delete_file_if_exists(file_path):
if path.exists(file_path):
remove(file_path)