<p>您可以捕获<code>OSError</code>,也可以使用<code>glob</code>来查找.mp3文件:</p>
<pre><code>import os
from glob import iglob
def renamefiles(pth):
os.chdir(pth)
for name in iglob("*.mp3"):
try:
os.rename(name, name.translate(None, "124567890").lstrip())
except OSError:
print("Caught error for {}".format(name))
# os.remove(name) ?
</code></pre>
<p>当你发现错误时,你应该怎么做取决于你自己,你可以保存一些找到的名字的记录,并为每个名字增加一个计数,或者保持原样。在</p>
<p>如果数字总是在开头,你也可以直接删除,这样你就可以安全地使用3:</p>
^{pr2}$
<p>使用示例字符串之一:</p>
<pre><code>In [2]: "05 Hotel California - The Eagles.mp3".lstrip("01234567890 ")
Out[2]: 'Hotel California - The Eagles.mp3'
</code></pre>
<p>使用原始方法无法像删除所有空间那样按预期工作:</p>
<pre><code>In [3]: "05 Hotel California - The Eagles.mp3".translate(None,"0124567890 ")
Out[3]: 'HotelCalifornia-TheEagles.mp3'
</code></pre>
<p>如果不在乎哪个文件被覆盖,可以使用<code>shutil.move</code>:</p>
<pre><code>import os
from glob import iglob
from shutil import move
def renamefiles(pth):
os.chdir(pth)
for name in iglob("*.mp3"):
move(name, name.translate(None, "124567890").lstrip())
</code></pre>
<p>另一方面,不要使用<code>list</code>作为变量名。在</p>