1

I'm trying to run this script:

import re, os

def build_pool(cwd): 

 global xtn_pool, file_pool
 xtn, xtn_pool = re.compile('\\.[0-9a-zA-Z]{1,4}$'), []
 file_pool = [files for files in os.listdir(cwd) if os.path.isfile(files) and xtn.search(files)]

 # Lists all the file extension in the folder
 for file in file_pool:
  if not xtn_pool.__contains__(xtn.search(file).group()):
   xtn_pool.append(xtn.search(file).group())

 return xtn_pool.sort(), file_pool


if __name__ == '__main__':
 import sys
 #if path is given, change working directory to path
 if len(sys.argv) >= 2: 
  os.chdir(sys.argv[1])
  build_pool(os.getcwd())
 #if no path is given when running, do renaming in current folder
 else:
  build_pool(os.getcwd())

print('The folder contains the following extensions: ')
for i in range(0, len(xtn_pool)):
 print(repr(i+1) + '. ' + xtn_pool[i][1:])

opt = int(input('Which one would you like to replace? '))
xtn_pick = xtn_pool[opt-1]

# Lists all the file with the chosen extension
xtn_file_pool = [file for file in file_pool if file.endswith(xtn_pick)]

print('There are {0} files with the {1} extension.'.format(len(xtn_file_pool), xtn_pick))
xtn_new = input('Input replacement extension: ')

# The actual renaming process
for file in xtn_file_pool:
 os.rename(file, file[:-len(xtn_pick)+1] + xtn_new)

directly from my file browser (Nautilus), but for some reason it's not working. When I run it from terminal (python3 scriptname.py) it works fine as intended. But when I just click the script file in Nautilus, choose 'Run in Terminal', it always stops after asking 'Input replacement extension: '.

How can I make this script run without using the terminal?

1 Answer 1

1

I think you need to add a shebang, ie the first line of your script should be #!/usr/bin/python3.

This way the terminal know which interpreter to use to run your script. (Also, make the file executable if it isn't.)

Sign up to request clarification or add additional context in comments.

3 Comments

I already included this in the script actually: #!/usr/bin/env python I think since it stops halfway through (not completely), the interpreter shouldn't be a problem (right?).
Oh okay I thought that was a dialog box from Nautilus, I didn't read the code entirely. So maybe it is because /usr/bin/env python is not python3?
Oh wow, it works! I thought that shouldn't be a problem :/. Oh well, another lesson learned. Thanks :D!

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.