Note that there are some explanatory texts on larger screens.

plurals
  1. POProblem Running Python Script in Java (Eclipse)
    primarykey
    data
    text
    <p>so yesterday I asked a question and I thought I had gotten my answer as everything seemed to work fine. I come back today to try and run my program and find nothing happens, and this time I am not getting any errors at all.</p> <p>To give you an idea of things, I've been looking to incorporate a Python Script a friend made for me into a Java application that I am trying to develop. After some trial and error I finally found out about 'Jython' and used the PythonInterpreter to try and run the script. </p> <p>However, upon trying to run it, I was getting an error within the Python Script. This was resolved by a suggestion a member of SO provided to change the "thisDir = getcwd()", or so I thought. Now I have no clue what could be wrong, the script works fine and does exactly what I need it to (extract all the images from the .docx files stored in its same directory) when I run it directly from the command line, so I don't know. Any ideas? </p> <p>Can someone help me out here? </p> <p><strong>Java:</strong></p> <pre><code>import org.python.core.PyException; import org.python.util.PythonInterpreter; public class SPImageExtractor { public static void main(String[] args) throws PyException { try { PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]); PythonInterpreter interp = new PythonInterpreter(); interp.execfile("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Image-Extractor2.py"); } catch(Exception e) { System.out.println(e.toString()); e.printStackTrace(); } } } </code></pre> <hr> <p><strong>Python:</strong></p> <pre><code>from os import path, chdir, listdir, mkdir, gcwd from sys import argv from zipfile import ZipFile from time import sleep #A few notes - #(1) when I do something like " _,variable = something ", that is because #the function returns two variables, and I only need one. I don't know if it is a #common convention to use the '_' symbol as the name for the unused variable, but #I saw it in some guy's code in the past, and I started using it. #(2) I use "path.join" because on unix operating systems and windows operating systems #they use different conventions for paths like '\' vs '/'. path.join works on all operating #systems for making paths. #Defines what extensions to look for within the file (you can add more to this) IMAGE_FILE_EXTENSIONS = ('.bmp', '.gif', '.jpg', '.jpeg', '.png', '.tif', '.tiff') #Changes to the directory in which this script is contained thisDir = gcwd() chdir(thisDir) #Lists all the files/folders in the directory fileList = listdir('.') for file in fileList: #Checks if the item is a file (opposed to being a folder) if path.isfile(file): #Fetches the files extension and checks if it is .docx _,fileExt = path.splitext(file) if fileExt == '.docx': #Creates directory for the images newDirectory = path.join(thisDir, file + "-Images") if not path.exists(newDirectory): mkdir(newDirectory) currentFile = open(file,"r") for line in currentFile: print line sleep(5) #Opens the file as if it is a zipfile #Then lists the contents try: zipFileHandle = ZipFile(file) nameList = zipFileHandle.namelist() for archivedFile in nameList: #Checks if the file extension is in the list defined above #And if it is, it extracts the file _,archiveExt = path.splitext(archivedFile) if archiveExt in IMAGE_FILE_EXTENSIONS: zipFileHandle.extract(archivedFile, newDirectory) except: pass </code></pre> <p><strong>EDIT</strong></p> <p>Just made some progress, so within Eclipse, when I run the Script by itself (not being called through java) as a "Python Run" everything works fine. However, when I do a "Jython Run" the script spazzes and it will create new directories for the images, however it will not extract the images themselves.</p> <p><strong>FINAL EDIT</strong></p> <p>Man, just screw crappy Jython. I just installed python into my path...</p> <pre><code>Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("C:\\Python27\\python.exe \"C:\\Documents and Settings\\user\\workspace\\Intern Project\\Proposals\\Converted Proposals\\ImageExtractor2.py\""); </code></pre> <p>Bam, worked perfectly.</p> <p>Hope that helps someone out there.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload