list index out of range Error , need to fix it or ignore it

Steven D'Aprano steve at pearwood.info
Sun Feb 28 08:00:44 EST 2016


On Sun, 28 Feb 2016 03:50 am, Ganesh Pal wrote:

> Iam on python 2.6 and Linux , I need  input on the below program ,
> here is the spinet of my program
> 
> 
> filename='/tmp2/2.txt'
> 
> def check_file():
>     """
>      Run the command parallel on all the machines , if there is a
> file named /tmp/file2.txt  extract file2.txt
> 
>     """
>     global filename

Since filename is never assigned to inside the function, you don't need to
declare it global.

But better is to make the filename an argument of the function. That will
allow you to check for different files, not always the same one.


>     baddr = ''

Not used. Get rid of it.


>     cmd = ("run_al_paral 'ls -al %s'" % (filename))
>     print(cmd)
>     stdout, stderr, exitcode = run(cmd)

run is not defined.


>     print(stdout)
>     lines = stdout.strip().split('\n')
>     print(lines)
>     for line in lines:
>         if 'exited' in lines:
>             continue
>         file = lines[0].split()[9][6:]
>         break
>     print file
>     return file
> 
> def main():
>     functions = [check_file]
>     for func in functions:
>         try:
>             func()
>         except Exception as e:
>             return False

Why do you bother to return False? Nothing checks the return value of
main().

As far as the try...except block, please read this:

https://realpython.com/blog/python/the-most-diabolical-python-antipattern/



> if __name__ == '__main__':
>       main()
> 
> 
> 
> 1.If the file is present in any one of the machine the program works
> fine , example if the file is in machine4 it works fine,
> 
> 
> machine-4# touch /tmp2/2.txt
> machine-4# python c_4.py
> run_al_parall 'ls -al /tmp2/2.txt'
> machine-4: -rw-r--r-- 1 root  wheel  0 Feb 27 08:15 /tmp2/2.txt
> gpal-machine-2 exited with status 1
> gpal-machine-5 exited with status 1
> gpal-machine-3 exited with status 1
> gpal-machine-1 exited with status 1

You really should get out of the bad habit of running code as root. Once day
you will accidentally have a bug in your code that will do something it
shouldn't do (like delete the root file system) and leave your machine
unusable.

You should create a user with the minimum privileges needed to get the work
done. At the very least, you should TEST your code while running as an
unprivileged user. It is very dangerous to run buggy code as root. Who
knows what it will do?


> 2. But if the file is not present we get index out of range error , do
> we need to fix this or its expected ? or its ok.

Of course you need to fix it.

There's no way of telling where that error occurs or why it is being
printed.




-- 
Steven




More information about the Python-list mailing list