forked from platypush/platypush
65 lines
1.4 KiB
Python
65 lines
1.4 KiB
Python
import os
|
|
|
|
from platypush.plugins import Plugin, action
|
|
|
|
|
|
class FilePlugin(Plugin):
|
|
"""
|
|
A plugin for general-purpose file methods
|
|
"""
|
|
|
|
@classmethod
|
|
def _get_path(cls, filename):
|
|
return os.path.abspath(os.path.expanduser(filename))
|
|
|
|
@action
|
|
def get(self, filename):
|
|
"""
|
|
Gets the content of a file
|
|
|
|
:param filename: Path of the file
|
|
:type filename: str
|
|
"""
|
|
|
|
with open(self._get_path(filename), 'r') as f:
|
|
return f.read()
|
|
|
|
@action
|
|
def write(self, filename, content):
|
|
"""
|
|
Writes content to a specified filename. Previous content will be truncated.
|
|
|
|
:param filename: Path of the file
|
|
:type filename: str
|
|
|
|
:param content: Content to write
|
|
:type content: str
|
|
"""
|
|
|
|
with open(self._get_path(filename), 'w') as f:
|
|
f.write(content)
|
|
|
|
@action
|
|
def append(self, filename, content):
|
|
"""
|
|
Append content to a specified filename
|
|
|
|
:param filename: Path of the file
|
|
:type filename: str
|
|
|
|
:param content: Content to write
|
|
:type content: str
|
|
"""
|
|
|
|
with open(self._get_path(filename), 'a') as f:
|
|
f.write(content)
|
|
|
|
@action
|
|
def getsize(self, filename):
|
|
"""
|
|
Get the size of the specified filename in bytes
|
|
"""
|
|
return os.path.getsize(filename)
|
|
|
|
# vim:sw=4:ts=4:et:
|
|
|