0

I have some python code that I want to run from the cmd prompt, but it's not working, my partner told me if I had this statement in my code:

if __name__ == '__main__':
    xs, a0, a1, y0, y1, ys = encode(sys.argv[1])
    np.set_printoptions(precision=6, suppress=True)

then it should be able to be run. I'll post my entire code and my command prompt errors to see if you guys can help

enter image description here

import random
import numpy as np
import sys
import pprint
from numpy import linalg as LA

#Takes in a n value
def encode(n):

    xA0 = np.zeros((n+3,1))
    xA1 = np.zeros((n+3,1))
    xStream = np.zeros((n+3,1))
#Creates a random x
    for i in range(0, n):
        xStream[i,0] = random.randint(0,1)

#Creates A0 and A1 based on size
    xA0[0,0] = 1
    xA0[2,0] = 1
    xA0[3,0] = 1

    xA1[0,0] = 1
    xA1[1,0] = 1
    xA1[3,0] = 1

    A0 = np.zeros((n+3,n+3))
    A1 = np.zeros((n+3,n+3))
    y0 = np.zeros((n+3,1))
    y1 = np.zeros((n+3,1))
    yStream = []

#Creates A0 and A1 using method defined in description
    for i in range(0,n+3):
        for k in range (0,i+1):
            A0[i,k] = xA0[i-k,0]
            A1[i,k] = xA1[i-k,0]

#A0*x and A1*x to get y0 and y1
    for i in range(0,n+3):
        y0[i,0] = np.dot(A0[i,:], xStream)
        y1[i,0] = np.dot(A1[i,:], xStream)

#answers mod 2 to get real answers
    for i in range(0,n+3):
        y0[i,0] = y0[i,0]%2
        y1[i,0] = y1[i,0]%2

#combined for yStream
    for i in range(0,n+3):
        yStream.append([y0[i,0],y1[i,0]])

    print("x:")
    print(xStream)
    print("\n")
    print("A0:")
    print(A0)
    print("\n")
    print("A1:")
    print(A1)
    print("\n")
    print("y0:")
    print(y0)
    print("\n")
    print("y1:")
    print(y1)
    print("\n")
    print("yStream:")
    print(yStream)

    return xStream, A0, A1, y0, y1, yStream

# This is only or when encode is used as a stand-alone module
# Read command line argument. Must be exactly one argument.
# It outputs on the console
if __name__ == '__main__':
    xs, a0, a1, y0, y1, ys = encode(sys.argv[1])
    np.set_printoptions(precision=6, suppress=True)

    print("x:")
    print(xs)
    print("\n")
    print("A0:")
    print(a0)
    print("\n")
    print("A1:")
    print(a1)
    print("\n")
    print("y0:")
    print(y0)
    print("\n")
    print("y1:")
    print(y1)
    print("\n")
    print("yStream:")
    print(ys)
Joseph hooper
  • 967
  • 4
  • 16
  • 35

2 Answers2

2

Since you have installed into D:\Python, copy the following into an editor and save it as a bat file (say runpython.bat) then run it (EDITED with thanks to @eryksun) Assumes Python 2:

@SET PATH=%PATH%;D:\Python;D:\Python\Scripts

@ASSOC .py=Python.File
@ASSOC .pyc=Python.CompiledFile
@ASSOC .pyo=Python.CompiledFile
@ASSOC .pyw=Python.NoConFile

@FTYPE Python.CompiledFile="D:\Python\python.exe" "%%1" %%*
@FTYPE Python.File="D:\Python\python.exe" "%%1" %%*
@FTYPE Python.NoConFile="D:\Python\pythonw.exe" "%%1" %%*
@SET PATHEXT=%PATHEXT%;.py

You should now be able to run python programs from the command-line

cdarke
  • 42,728
  • 8
  • 80
  • 84
  • I run it as an administrator and it immediately closes out so I cant see what it says, but it didnt seem to work – Joseph hooper Mar 31 '15 at 04:36
  • @eryksun: fair enough, no argument with any of your points, I'll amend. – cdarke Mar 31 '15 at 14:01
  • @eryksun: no `@echo off`. I find that when adding a new line to the type of file I omit the @ so I can see it is being executed. When I'm happy I prefix the @. Maybe its just me, but you have to let me retain *some* of my original :-) – cdarke Mar 31 '15 at 14:41
1

Goto

My Computer > Properties > Advanced System Settings > Environment Variables >

Add Path of your Python in Variable value.

enter image description here

sumit-sampang-rai
  • 701
  • 1
  • 7
  • 16