I'm fairly new when it comes to programming, and have started out learning python.
What I want to do is to recolour sprites for a game, and I am given the original colours, followed by what they are to be turned into. Each sprite has between 20 and 60 angles, so looping through each one in the folder for each colour is probably the way to go for me. My code goes thusly;
import media
import sys
import os.path
original_colors = str(raw_input('Please enter the original RGB component, separated ONLY by a single space: '))
new_colors = str(raw_input('Please insert the new RGB component, separated ONLY by a single space: '))
original_list = original_colors.split(' ')
new_list = new_colors.split(' ')
folder = 'C:\Users\Spriting\blue'
if original_colors == 'quit' or new_colors == 'quit':
sys.exit(0)
else:
while 1:
for filename in os.listdir (folder):
for pix in filename:
if (media.get_red(pix) == int(original_list[0])) and (media.get_green(pix) == int(original_list[1])) and \
(media.get_blue(pix) == int(original_list[2])):
media.set_red(pix, new_list[0])
media.set_green(pix, new_list[1])
media.set_blue(pix, new_list[2])
media.save(pic)
But I keep getting an error on the pathname, and on pix being a string value (They're all pictures)
Any help appreciated.
iterates over the letters of the filename. So that's certainly not what you want. You'll probably want to replace that line by:
(assuming Python 2.6) and indent the rest of the loop accordingly.
However, I'm not sure that the new
for
loop does what you want unless bypix
you mean a line of text in the current file. If the files are binary picture files, you'll first need to read their contents correcty - not enough info in your post to guess what's right here.os.listdir() returns a list of file names. Thus,
filename
is a string. You need to open the file before iterating on it, I guess.Also, be careful with backslashes in strings. They are mostly used for special escape sequences, so you need to escape them by doubling them. You could use the constant
os.sep
to be more portable, or even useos.path.join()
:The path is wrong because the backslashes need to be doubled up - backslash is an escape for special characters.
os.listdir
does not return open files, it returns filenames. You need to open the file using the filename.