wobbily_col
wobbily_col

Reputation: 11921

Python 3, can I tell if a file opened in binary mode contains text?

I am upgrading some code from python 2 to python 3.

There is a function to open and read files. In Python 2 there is no need to specify binary mode or as a string. While in Python 3 I should specify the mode.

The python 2 code is:

with open(f_path, mode=open_mode) as fp:
    content = fp.read()

This is causing me problems as it is called by various other functions where I don't necessarily know the file type in advance. (Sometimes the data is written to a zip file, other times the data is returned via an HTTP endpoint).

I expect most data will be binary image files, though CSv and text files will also be present.

What would be the best way of opening a file of unknown type and detecting if it is binary or string data?

Is it possible for example to open a file in binary mode, then detect that it contains text and convert it (or alternatively generate an exception and open it in string mode instead)?

Upvotes: 0

Views: 1145

Answers (1)

user6851498
user6851498

Reputation:

You might try the binaryornot library.

pip install binaryornot

Then in the code:

from binaryornot.check import is_binary
is_binary(f_path)

Here is their documentation:

https://pypi.org/project/binaryornot/

Upvotes: 2

Related Questions