从文件名中删除特殊字符列表的有效方法是什么?我想替换'空格'用'。'和'(',')',' [',']'用' _'。我可以做一个,但我不确定如何重命名多个字符。
import os
import sys
files = os.listdir(os.getcwd())
for f in files:
os.rename(f, f.replace(' ', '.'))
答案 0 :(得分:0)
您可以执行for循环检查文件名中的每个字符并替换:
import os
files = os.listdir(os.getcwd())
under_score = ['(',')','[',']'] #Anything to be replaced with '_' put in this list.
dot = [' '] #Anything to be replaced with '.' put in this list.
for f in files:
copy_f = f
for char in copy_f:
if (char in dot): copy_f = copy_f.replace(char, '.')
if (char in under_score): copy_f = copy_f.replace(char,'_')
os.rename(f,copy_f)
这方面的诀窍是第二个for循环运行 len(copy_f)次,肯定会替换符合条件的所有字符:) 此外,没有必要进行此导入:
import sys
答案 1 :(得分:0)
此解决方案有效;如果您对效率的要求是避免O(n ^ 2)行为的时间复杂性,那么这应该没问题。
import os
files = os.listdir(os.getcwd())
use_dots = set([' '])
use_underbar = set([')', '(', '[', ']'])
for file in files:
tmp = []
for char in file:
if char in use_dots:
tmp.append('.')
elif char in use_underbar: #You added an s here
tmp.append('_')
else:
tmp.append(char)
new_file_name = ''.join(tmp)
os.rename(file, new_file_name)
如果你开始使用bytearray,你可以提高效率;这样可以避免“tmp”。列表,并创建一个新的字符串,并在其上进行后续连接。