Python for循环中如何将变量i的值传入pixelate函数的路径参数
问题解决方法
问题核心
你当前的代码仅把%i占位符写死在路径字符串中,没有执行字符串插值操作将循环变量i的实际值代入路径,pixelate函数接收到的是未替换占位符的原始字符串,无法匹配到对应文件。
解决方案
方案1:沿用%格式化语法(和你现有写法习惯一致)
from pixelate import pixelate for i in range(197): # %运算符会将后方的i值代入字符串中的%i位置 pixelate('/Users/amanrai/Desktop/lady/%i.png' % i, '/Users/amanrai/Desktop/lady/rotate/%i.png' % i, 20)
方案2:f-string写法(Python 3.6+推荐,可读性更高)
from pixelate import pixelate for i in range(197): # 字符串前加f前缀,大括号内直接写变量名即可完成插值 pixelate(f'/Users/amanrai/Desktop/lady/{i}.png', f'/Users/amanrai/Desktop/lady/rotate/{i}.png', 20)
方案3:使用os.path拼接路径(兼容性更强,避免跨系统路径格式问题)
import os from pixelate import pixelate # 提前定义基础目录,后续修改路径更方便 base_input_dir = '/Users/amanrai/Desktop/lady' base_output_dir = '/Users/amanrai/Desktop/lady/rotate' for i in range(197): input_path = os.path.join(base_input_dir, f'{i}.png') output_path = os.path.join(base_output_dir, f'{i}.png') pixelate(input_path, output_path, 20)
注意事项
Python内置的range(197)生成的是0到196的整数,如果你的文件名是从1开始编号到197,将range(197)修改为range(1, 198)即可。
内容的提问来源于stack exchange,提问作者Zac
相关产品推荐
相关产品推荐

