Write/read from memory instead of files when open() is called
Project description
Write/read from memory instead of files when open() is called
@read_decorator fakes the existence of a file and provides the file content when open(mode='r'/mode='rb') from the builtins is called.
@write_decorator captures the output when open(mode='w'/mode='wb') from the builtins is called.
The decorators don't work with functions/methods that don't use the open() function (for example: cv2.imread / cv2.imwrite)
Some examples
import pandas as pd
import cv2
from PIL import Image
import numpy as np
import os.path
from fake_read_write_files import read_decorator, write_decorator
@read_decorator
def readutf8(filename, _file_data):
with open(filename, mode="r", encoding="utf-8") as f:
data = f.read()
return data
@write_decorator
def write_pil_image(pilpic, filepath):
pilpic.save(filepath)
# don't use "return" here, the function will return a dict
@read_decorator
def read_bin_file(filename, _file_data):
with open(filename, mode="rb") as f:
data = f.read()
return data
@read_decorator
def pandasread(filename, _file_data):
return pd.read_csv(filename)
@write_decorator
def pandaswrite(df, filename):
df.to_csv(filename)
# don't use "return" here, the function will return a dict
# the read decorator always checks for the kwarg "_file_data"
# It must be passed as a kwarg
e = readutf8(
filename="f:\\txtdoesnotexist.txt", _file_data="I am fake\nDid you know that?"
)
print(e)
# real file
bi = Image.open(r"C:\Users\Gamer\anaconda3\envs\dfdir\xxxxxxxxxx.png")
# writing to a fake file, returns a dict with all written files in the function,
# even if there is no return value declared
o = write_pil_image(bi, filepath="i_am_a_fake_image.png")
print(
cv2.imdecode(np.frombuffer(o["i_am_a_fake_image.png"], np.uint8), cv2.IMREAD_COLOR)
)
binaryfile = read_bin_file(
filename="i_am_a_fake_image.png", _file_data=o["i_am_a_fake_image.png"]
)
df = pandasread(filename="test.csv", _file_data="john,1\nmaria,2\ncarlos,3")
print(df)
pdcsv = pandaswrite(df, filename="test.csv")
print(pdcsv)
# output
I am fake
Did you know that?
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[254 255 255]
[253 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[254 255 255]
[253 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[254 255 255]
[253 255 255]]
...
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 254]
[255 255 254]
[255 255 254]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 254]
[255 255 254]
[255 255 254]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 254]
[255 255 254]
[255 255 254]]]
john 1
0 maria 2
1 carlos 3
{'test.csv': ',john,1\r\n0,maria,2\r\n1,carlos,3\r\n'}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for fake_read_write_files-0.10.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2001765429c1d3d496058f5e47e86272e403fc86a420c52c501878167ddf6b5 |
|
MD5 | a50126f2fbb1c6e668c556ddff86104e |
|
BLAKE2b-256 | 7cb750a04281cc201b6ef3ed51c0402f9cd530f720a90e900d2fc3d4f6ced364 |
Close
Hashes for fake_read_write_files-0.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e9ed8faf9c5637da144187cb33e058487ff3b3bbadcc2e317e26359a0787e8a |
|
MD5 | 7fa1fd0c66b903c439020a9f42af7490 |
|
BLAKE2b-256 | 97b6b47c18c59831bb57dbb0a696bb32d76159f2950eae431149f5147d894b90 |