views:

56

answers:

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  A: 

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.)

p4bl0
I already included this in the script actually:#!/usr/bin/env pythonI think since it stops halfway through (not completely), the interpreter shouldn't be a problem (right?).
splatterdash
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?
p4bl0
Oh wow, it works!I thought that shouldn't be a problem :/. Oh well, another lesson learned. Thanks :D!
splatterdash