How to create fake text file in Python

Question:

How can I create a fake file object in Python that contains text? I’m trying to write unit tests for a method that takes in a file object and retrieves the text via readlines() then do some text manipulation. Please note I can’t create an actual file on the file system. The solution has to be compatible with Python 2.7.3.

Asked By: user1454693

||

Answers:

This is exactly what StringIO/cStringIO (renamed to io.StringIO in Python 3) is for.

Answered By: Danica

Or you could implement it yourself pretty easily especially since all you need is readlines():

class FileSpoof:
     def __init__(self,my_text):
         self.my_text = my_text
     def readlines(self):
         return self.my_text.splitlines()

then just call it like:

somefake = FileSpoof("This is a bunchnOf Text!")
print somefake.readlines()

That said the other answer is probably more correct.

Answered By: Joran Beasley

In Python3

import io
fake_file = io.StringIO("your text goes here") # takes string as arg
fake_file.read() # you can use fake_file object to do whatever you want

In Python2

import io
fake_file = io.StringIO(u"your text goes here") # takes unicode as argument
fake_file.read()  # you can use fake_file object to do whatever you want

For more info check docs here

Answered By: Ash Singh

It’s easy using faker-file (supported formats BIN, CSV, DOCX, ICO, JPEG, PDF, PNG, PPTX, SVG, TXT, WEBP and ZIP).

Installation

pip install faker-file[common]

Usage

from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider

FAKER = Faker()
FAKER.add_provider(TxtFileProvider)

file = FAKER.txt_file()

Check the quick start and recipes for more.

Answered By: Artur Barseghyan
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.