A Sanz
A Sanz

Reputation: 47

Using Script = argv in Python3

I'm playing around with Python3 and every time I run the code Python3 ex14.py below and I print the (f"Hi {user_name}, I'm the {script} script.") I get the {user_name} right but the {script} shows the file I'm running plus the variable {user_name}

from sys import argv

script = argv
prompt = '> '

# If I use input for the user_name, when running the var script it will show the file script plus user_name
print("Hello Master. Please tell me your name: ")
user_name = input(prompt)

print(f"Hi {user_name}, I'm the {script} script.")

How can I print just the file I'm running?

Upvotes: 2

Views: 295

Answers (2)

Rhesous
Rhesous

Reputation: 1004

The answer of timgeb is correct, but if you want to get rid of the path of the file you can use os.path.basename(__file__) from the os lib.

In your code it would be something like :

from sys import argv
import os

script = argv
prompt = '> '

# If I use input for the user_name, when running the var script it will show the file script plus user_name
print("Hello Master. Please tell me your name: ")
user_name = input(prompt)

script = os.path.basename(__file__)
print(f"Hi {user_name}, I'm the {script} script.")

Upvotes: 0

timgeb
timgeb

Reputation: 78780

argv collects all the command line parameters, including the name of the script itself. If you want to exclude the name, use argv[1:]. If you want just the filename, use argv[0]. In your case: script = argv[0].

Upvotes: 5

Related Questions