擅长:python、mysql、java
<p>我无法用以下代码重现问题:</p>
<pre><code>file_names = ['test1', 'test2', 'test3', 'test*4', 'test5', 'test6']
for file_name in file_names:
try:
fls = open(file_name + '.txt', 'w')
fls.writelines(file_name + ' content')
fls.close()
print 'Saved', file_name
except IOError as a:
print a
</code></pre>
<p>输出为:</p>
<pre><code>Saved test1
Saved test2
Saved test3
[Errno 22] invalid mode ('w') or filename: 'test*4.txt'
Saved test5
Saved test6
</code></pre>
<p>这表明跳过了测试*4,但成功保存了以下文件。代码中肯定还有其他问题(可能是beatbox部分),但是可以通过用下划线替换所有特殊字符来避免。正则表达式完全没有痛苦:</p>
<pre><code>file_name = 'hello*world!!'
file_name_clean = re.sub(r'[^\w]+', '_', file_name)
print file_name_clean
</code></pre>
<p>输出:</p>
<pre><code>hello_world_
</code></pre>