0

This is going to be the easiest question for someone to solve, but I can't seem to find the answer. I've got a really simple program that prints the date, and time. I'm trying to run it from the terminal in OS X, as that is how it'll be run when I hand it in to my prof. I've been told the way to run this is with a command like this:

XXX-MacBook-Air:~ XXX$ sudo chmod a+x /Users/[path]/currenttime.py

But when I do that, the print statement in the script doesn't output anywhere. I'm not sure if it is supposed to output in terminal, or where it would print to.

Below is my script for anyone who wants more info on my rookie struggles:

import datetime

#!/usr/bin/env python

def currenttime():
date1 = str(datetime.datetime.now())
day = date1[8:10] #not stripped at all
day2= day.lstrip("0") #strip leading zeros
if len(day2) == 2:
    #then we have a two digit day and we should work with the last digit
    if day2[1] == 1:
        day_suffix = 'st'
    elif day2[1] == 2:
        day_suffix = 'nd'
    elif day2[1] == 3:
        day_suffix = 'rd'
    else:
        day_suffix = 'th'
else:
    #one digit day, run off the single digit
    if day2 == 1:
        day_suffix = 'st'
    elif day2 == 2:
        day_suffix = 'nd'
    elif day2 == 3:
        day_suffix = 'rd'
    else:
        day_suffix = 'th'
month = date1[5:7]
#we can use the month to search through a dictionary and return the english name
month_dict= {'01' : 'January', '02': 'February', '03': 'March', '04': 'April', '05': 'May', '06': 'June', '07': 'July', '08': 'August', '09': 'September', '10': 'October', '11': 'November', '12': 'December'}
year = date1[0:4]
hour = date1[11:13]
minute = date1[14:16]
print("Printed on the " + day2 + day_suffix + " day of " + month_dict[month] + ", " + year + " at " + hour + ":" + minute)

currenttime()
0

2 Answers 2

4

That isn't the way to run it. This is the simple way:

XXX-MacBook-Air:~ XXX$ python /Users/[path]/currenttime.py

In the alternative, you can arrange to avoid the python in the previous line by doing two things:

1) Associate your script with python. Make this line be the very first line of your script: #!/usr/bin/env python

2) Mark this program as executable by running this command once:

XXX-MacBook-Air:~ XXX$ chmod a+x /Users/[path]/currenttime.py

Then, each time you want to run your program do this:

XXX-MacBook-Air:~ XXX$ /Users/[path]/currenttime.py
Sign up to request clarification or add additional context in comments.

2 Comments

This works, but occasionally will give me a 'permission denied' for certain .py files? Edit: Thanks person below, that makes sense!
You are only allowed to chmod files that you own. If you are applying it to a file that is owned by another account, you need sudo chmod.
2

sudo chmod a+x /Users/[path]/currenttime.py sets the execute permissions on your Python script so that it can be executed. It doesn't actually execute it.

To execute your script call the python interpreter explicitly:

python /Users/[path]/currenttime.py

Or you could/probably should move #!/usr/bin/env python to be the very first line in your file. Then you can execute your python script directly.

/Users/[path]/currenttime.py

2 Comments

You seem to imply that x must be set in order to run python currenttime.py. This is not so. If you invoke python directly, it doesn't matter if x is set on currenttime.py.
I don't get that from reading my answer, but I could see why you think that.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.