擅长:python、mysql、java
<p>你有两个for循环,这是可以理解的,但为什么有一个内部while循环?我猜,您添加while循环是因为您提到,<code>Each sub folder has 2 wav files</code></p>
<p>第二个for循环(<code>for file in files:</code>)和内部while循环(<code>while y < 3:</code>)实际上是导致错误的原因。第二个for循环已经遍历了所有文件,因此,不需要内部while循环</p>
<p>在不使用内部while循环的情况下修改程序,如下所示</p>
<pre><code>import os
rootdir = './test'
for subdir, dirs, files in os.walk(rootdir):
y = 1
for file in files:
filepath = subdir + os.sep + file
if filepath.endswith('.wav'):
split_dir = subdir.split(os.sep)
f_name, f_ext = os.path.splitext(file)
new_name= split_dir[len(split_dir) - 1] +'_' + 'test_' + str(y).zfill(2) + f_ext
y = y + 1
print (filepath)
print (subdir + os.sep + new_name)
os.rename(filepath, subdir + os.sep + new_name)
</code></pre>
<p>它输出(在我的场景中):</p>
<pre><code>./test\01\yy.wav
./test\01\01_test_01.wav
./test\01\xx.wav
./test\01\01_test_02.wav
./test\02\yy.wav
./test\02\02_test_01.wav
./test\02\xx.wav
./test\02\02_test_02.wav
</code></pre>