我想在文件夹列表中编辑多个文件的文件名,并将整个文件导出到新文件夹。虽然我能够将文件重命名为okay,但文件的内容没有迁移过来。我想我编写的代码只是创建一个新的空文件而不是编辑旧文件并将其移动到新目录。我觉得修复应该很容易,而且我缺少几行重要的代码。以下是我到目前为止:
导入库
import os
import glob
import re
目录
directory = glob.glob('Z:/Stuff/J/extractions/test/*.fsa')
打印出来时,目录中的两个文件看起来像这样
Z:/Stuff/J/extractions/test\c2_D10.fsa
Z:/Stuff/J/extractions/test\c3_E10.fsa
for fn in directory:
print fn
此脚本旨在操作文件名并将操纵文件导出到另一个文件夹
for fn in directory:
output_directory = 'Z:/Stuff/J/extractions/test2'
value = os.path.splitext(os.path.basename(fn))[0]
matchObj = re.match('(.*)_(.*)', value, re.M|re.I)
new_fn = fn.replace(str(matchObj.group(0)), str(matchObj.group(2)) + "_" + str(matchObj.group(1)))
base = os.path.basename(new_fn)
v = open(os.path.join(output_directory, base), 'wb')
v.close()
我的最终结果如下:
Z:/Stuff/J/extractions/test2\D10_c2.fsa
Z:/Stuff/J/extractions/test2\E10_c3.fsa
但就像我说的那样,文件在output_directory中是空的(0 kb)
答案 0 :(得分:1)
如果我没错,你只是打开文件,然后你会立即再次关闭它?
没有对文件的任何写入,它肯定是空的。
看看这里: http://docs.python.org/2/library/shutil.html
shutil.copyfile(src,dst);)
答案 1 :(得分:1)
斯特凡提到:
import shutil
并替换:
v = open(os.path.join(output_directory, base), 'wb')
v.close()
使用:
shutil.copyfile (fn, os.path.join(output_directory, base))