Hi. I've not been working with Python very long and have run into a puzzling 
thing. I'm working on a program that needs to identify the filetype of files 
without extensions. Using the file command in the shell works fantastic, as in:
   
   
rob...@ubuntu:~$ file -b linuxlogotag
   JPEG image data, JFIF standard 1.01
   
   
I want to be able to perform the same task in a program for batch processing. 
After a bit of research, I found that I can execute the shell command from 
within a Python program using:
   
   
import os
   os.system('file -b /home/robert/linuxlogotag')
   
   
This also works fine. The problem is that when I try to replace the hard coded 
path/name with a string variable for looping, the results are not the same as 
the shell's. Here's the modified code I'm using for testing (the original code 
is from Bogdan's blog at http://bogdan.org.ua/).
   
   
import os, glob
   path = '/home/robert'
   for infile in glob.glob( os.path.join(path, '*.*') ):
     testCommand = "'file -b " + infile + "'"
     print testCommand,
     test = os.system(testCommand)
     print test
   
   
The code does indeed step through all the files in the directory and the 
testCommand string constructs properly. Yet, the output is not the same as 
shell results. All files, regardless of type, simply output the number 32512, 
with no description.

   
   I have searched forums, read the man file and perused several Python 
references and have not been able to find the answer. Why does the same command 
yield different results, depending on how it's run? Any education is greatly 
appreciated.

   
   Linux 2.6 (kubuntu 8.04)
   Python 2.5.2
   file command 4.21
  


      
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to