Fir*_*ras 34 python loops file
在编程方面我很新,并开始学习python.
我想要做的是为游戏重新塑造精灵,我会得到原始颜色,然后是他们要变成什么颜色.每个精灵都有20到60个角度,所以循环浏览每个颜色的文件夹中的每一个都可能是我的选择.我的代码如此;
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)
Run Code Online (Sandbox Code Playgroud)
但我一直在路径名上出错,而pix就是一个字符串值(他们都是图片)
任何帮助赞赏.
Woo*_*kai 34
os.listdir()返回文件名列表.因此,filename
是一个字符串.我猜你需要在迭代之前打开文件.
另外,要小心字符串中的反斜杠.它们主要用于特殊的转义序列,所以你需要通过加倍它们来逃避它们.你可以使用常量os.sep
来更方便,甚至使用os.path.join()
:
folder = os.path.join('C:\\', 'Users', 'Sprinting', 'blue')
Run Code Online (Sandbox Code Playgroud)
Tim*_*ker 10
for pix in filename:
Run Code Online (Sandbox Code Playgroud)
迭代文件名的字母.所以这肯定不是你想要的.您可能希望通过以下方式替换该行:
with open(filename) as current_file:
for pix in current_file:
Run Code Online (Sandbox Code Playgroud)
(假设Python 2.6)并相应地缩进循环的其余部分.
但是,我不确定新for
循环是否符合您的要求,除非pix
您指的是当前文件中的一行文本.如果文件是二进制图片文件,您首先需要正确阅读他们的内容 - 在您的帖子中没有足够的信息来猜测这里是什么.