From: Holger brunck on 21 Jul 2010 08:57 Hi all, I use python 2.5 and I am looking for a possibility to determine a file type. Especially the endianness of a file is needed for me. Is there a way to detect this easily in python? Something like the "file" utility for linux would be very helpfull. Any help is appreciated. Best regards Holger Brunck
From: Grant Edwards on 21 Jul 2010 10:02 On 2010-07-21, Holger brunck <holger.brunck(a)keymile.com> wrote: > I use python 2.5 and I am looking for a possibility to determine a > file type. Especially the endianness of a file is needed for me. Is > there a way to detect this easily in python? Only if you already know what's going to be in the file. > Something like the "file" utility for linux would be very helpfull. > > Any help is appreciated. You're going to have to describe in detail what's in the file before anybody can help. -- Grant Edwards grant.b.edwards Yow! A shapely CATHOLIC at SCHOOLGIRL is FIDGETING gmail.com inside my costume..
From: Michael Torrie on 21 Jul 2010 10:44 On 07/21/2010 08:02 AM, Grant Edwards wrote: > On 2010-07-21, Holger brunck <holger.brunck(a)keymile.com> wrote: > >> I use python 2.5 and I am looking for a possibility to determine a >> file type. Especially the endianness of a file is needed for me. Is >> there a way to detect this easily in python? > > Only if you already know what's going to be in the file. > >> Something like the "file" utility for linux would be very helpfull. >> >> Any help is appreciated. > > You're going to have to describe in detail what's in the file before > anybody can help. There is a python module called "magic" that uses the same engine as file to determine a file type. It's part of the "find" source code: http://www.darwinsys.com/file/ On Fedora I can just yum install python-magic to get it.
From: Holger brunck on 21 Jul 2010 11:29 >> Something like the "file" utility for linux would be very helpfull. >> >> Any help is appreciated. >You're going to have to describe in detail what's in the file before >anybody can help. We are creating inside our buildsystem for an embedded system a cram filesystem image. Later on inside our build process we have to check the endianness, because it could be Little Endian or big endian (arm or ppc). The output of the "file" tool is for a little endian cramfs image: <ourImage>: Linux Compressed ROM File System data, little endian size 1875968 version #2 sorted_dirs CRC 0x8721dfc0, edition 0, 462 blocks, 10 files It would be possible to execute ret = os.system("file <ourImage> | grep "little endian") and evaluate the return code. But I don't like to evaluate a piped system command. If there is an way without using the os.system command this would be great. Best regards Holger
From: Thomas Jollans on 21 Jul 2010 15:06 On 07/21/2010 05:29 PM, Holger brunck wrote: > >>> Something like the "file" utility for linux would be very helpfull. >>> >>> Any help is appreciated. > >> You're going to have to describe in detail what's in the file before >> anybody can help. > > We are creating inside our buildsystem for an embedded system a cram filesystem > image. Later on inside our build process we have to check the endianness, > because it could be Little Endian or big endian (arm or ppc). > > The output of the "file" tool is for a little endian cramfs image: > <ourImage>: Linux Compressed ROM File System data, little endian size 1875968 > version #2 sorted_dirs CRC 0x8721dfc0, edition 0, 462 blocks, 10 files > > It would be possible to execute > ret = os.system("file <ourImage> | grep "little endian") > and evaluate the return code. > But I don't like to evaluate a piped system command. If there is an way without > using the os.system command this would be great. Files don't, as such, have a detectable endianess. 0x23 0x41 could mean either 0x4123 or 0x2341 - there's no way of knowing. The "file" utility also doensn't really know about endianess (well, maybe it does swap bytes here and there, but that's an implementation detail) - it just knows about file types. It knows what a little-endian cramfs image looks like, and what a big-endian cramfs image looks like. And as they're different, it can tell them apart. If you're only interested in a couple of file types, it shouldn't be too difficult to read the first few bytes/words with the struct module and apply your own heuristics. Open the files in question in a hex editor and try to figure out how to tell them apart!
|
Next
|
Last
Pages: 1 2 Prev: Sorting a list created from a parsed xml message Next: An ODBC interface for Python 3? |