Python Forum

Full Version: Issue with command line arguments
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
So I'm having issues with my program command line arguments. In pycharm on windows it works great but when I go to linux it only takes arguments up to the first semicolon ";" and then pretends nothing exists beyond it.

My code:

inputs = []
for arg in sys.argv:
    inputs.append(arg)
then I call inputs.pop(0) to get what I need.

sample input is something like this:

load-policy sample.txt; add-attributes-to-permission PW role Student; check-permission Josie GradesFile ENV PW

In linux I run my file:

ABAC_engine.py load-policy sample.txt; add-attributes-to-permission PW role Student; check-permission Josie GradesFile ENV PW


and I have it print out everything saved in inputs....it only saves the first bit up until sample.txt (I'm supposing because of the semicolon)

Please help! Thank you!
why do you need the semicolon there?
On linux shell semicolon is used to separate commands and each command will be executed regardless the outcome of the previous one
https://unix.stackexchange.com/a/159514
i.e. it's linux feature, not python issue

as to your code
inputs = sys.argv[::]
Thank you buran!

This helped me realize what was going on. It's rather long to explain but ultimately I used a makefile that worked with another file to take input from text files and feed it as arguments to my program and in doing so it took care of the parenthesis issue.

Thanks for your help with this, I didn't realize that linux separates commands via ; Very good thing to know!