【问题标题】:Editing file names and saving to new directory in python在python中编辑文件名并保存到新目录
【发布时间】:2013-09-09 19:41:28
【问题描述】:

我想编辑文件夹列表中多个文件的文件名并将整个文件导出到新文件夹。虽然我可以重命名文件,但文件的内容并没有迁移过来。我想我编写代码只是为了创建一个新的空文件,而不是编辑旧文件并将其移至新目录。我觉得修复应该很容易,而且我遗漏了几行重要的代码。以下是我目前所拥有的:

导入库

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)

【问题讨论】:

    标签: python regex path directory


    【解决方案1】:

    正如斯特凡所说:

    导入关闭

    并替换:

    v = open(os.path.join(output_directory, base), 'wb')
    v.close()
    

    与:

    shutil.copyfile (fn, os.path.join(output_directory, base))
    

    【讨论】:

    • 工作完美!谢谢。
    【解决方案2】:

    如果我没记错的话,你只是打开文件,然后又立即关闭它?

    如果没有写入文件,它肯定是空的。

    看看这里: http://docs.python.org/2/library/shutil.html

    shutil.copyfile(src, dst) ;)

    【讨论】:

    • 谢谢斯特凡!这是一个很好的线索。
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多