zachary
zachary

Reputation: 3

Python timed subprocess.Popen

I have the following code which gets data from a webscrape. I only just learnt how to use the

subprocess.Popen

and i am trying to ouse my initiative along with other answers to similar questions on how to use the

subprocess.Popen

to execute the script below to get the webscrape data into my insert field updated every 30 seconds or so. But it is not working. Please could you point me in the right direction?

import xlrd
import subprocess
from Tkinter import *
import urllib2
from ttk import *
import Tkinter as tk

class Application(Frame):
    """GUI to display results of 'equity get'"""
    
    def __init__(self, master):
        """initialise the Frame"""
        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()
 
    def create_widgets(self):
        """Create button, text and entry Widget"""
        """what it is i.e. label"""
        
        url = "https://......."
        request= urllib2.Request(url)
        handle = urllib2.urlopen(request)
        content = handle.read()
        splitted_page = content.split("<.......">", 1);
        splitted_page = splitted_page24[1].split("</.......>", 1)

        self.data = Label(self, text ="Data")
        self.data1 = Entry(self, width = 10)
        self.data1.insert(0,splitted_page[0])

        self.data.grid(column = 1, row = 1)
        self.data1.grid(column = 2, row = 1)
        self.data1.grid(column = 3, row = 1)            

        a = 0
        while a < 10:
            a += 1
            time.sleep(15)
        while True:
            out =   subprocess.Popen(["C:\Users\.....\Desktop\Py\python.exe","C:\Users\.....\Desktop\..\Python27\.....\tester.py"])

app = Application(root)
root.title("reload test")
root.geometry("700x300")
root.mainloop()

the error i get is error no 22: invalid syntax referring to the script between the

     (["C:\Users\.....\Desktop\Py\python.exe","C:\Users\.....\Desktop\..\Python27\.....\tester.py"])

then multiple command line windows open displaying the same error and i have to shut down the computer to stop it!

i amended the reference to my file with the 'r' prefix as follows:

([r"C:\Users\.....\Desktop\..\Python27\.....\tester.py"])

but removed the python.exe call as it just calling up the command line window. Now, i receive the following error message:

Traceback (most recent call last):
File "C:\Users\....\Desktop\Py\Python27\.....\tester.py", line 46, in <module>
app = Application(root)
File "C:\Users\......\Desktop\Py\Python27\.....\tester.py", line 18, in __init__
self.create_widgets()
File "C:\Users\.....\Desktop\Py\Python27\......\tester.py", line 44, in create_widgets
out = subprocess.Popen([r"C:\Users\Isaac\Desktop\Py\Python27\.....\tester.py"])
File "C:\Users\.....\Desktop\Py\lib\subprocess.py", line 672, in __init__
errread, errwrite)
File "C:\Users\.....\Desktop\Py\lib\subprocess.py", line 882, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application

Upvotes: 0

Views: 102

Answers (1)

johntellsall
johntellsall

Reputation: 15170

Python uses backslash to quote characters, like \n = newline and \t = tab.

Use an r prefix to make a raw string literal, like a Windows file path:

out =  subprocess.Popen([r"C:\Users\.....\Desktop\Py\python.exe", r"C:\Users\.....\Desktop\..\Python27\.....\tester.py"])

Upvotes: 1

Related Questions