我是Python新手。我正在将evtx日志文件转换为xml,但是,一些evtx文件的名称中有空白,当文件转换开始时,我得到一个错误。解决方案之一是手动删除所有的空白从evtx文件名,但当您处理大量文件时,这是不可能的。
我需要从多个目录中的文件名中删除所有空白。我试图通过使用.replace(" ","")
删除空白来重命名文件,但是,我一直得到一个错误:
FileNotFoundError: [Errno 2] No such file or directory:
代码:
dir_path = '/home/user/evtx_logs'
for dirpath, dirnames, filenames in os.walk(dir_path):
for f in filenames:
new_filename = f.replace(" ","")
os.rename(f,new_filename)
是否有其他替代方法来重命名或忽略文件名中的空白?
尝试打印目录遍历的值。您将注意到文件名不是路径,它们只是文件的名称。当您尝试重命名文件时,需要将函数指向整个路径。像这样:
for dirpath, dirnames, filenames in os.walk(dir_path):
for f in filenames:
filepath = os.path.join(dirpath, f)
new_filename = f.replace(" ","")
new_filepath = os.path.join(dirpath, new_filename)
os.rename(filepath, new_filepath)
方案
dir_path = '/home/user/evtx_logs'
for dirpath, dirnames, filenames in os.walk(dir_path):
for f in filenames:
new_filename = f.replace(" ","")
os.rename(os.path.join(dirpath, f), os.path.join(dirpath, new_filename))
您需要将full path
提供给os.rename
以进行重命名。
这里
os.path.join(dirpath, new_filename)
目录路径或目录名,不知道确切的:
os.path.join(dirnames, new_filename)