【问题标题】:How to move files based on their names to specific directories in python?如何根据文件名将文件移动到python中的特定目录?
【发布时间】:2012-10-15 07:10:39
【问题描述】:

我有一个名为/user/local/ 的目录,其中有几个格式为jenjar.dat_1jenmis.dat_1 的文件。还有另一个目录/user/data,其中有两个表单的子目录jenjarjenmis。我需要一个 Python 代码,它将 jenjar.dat_1 移动到 /user/datajenjar 目录中,同样,将 jenmis.dat_1 移动到 jenmis'/user/data 目录中。

我猜os 模块会为此工作,但我很困惑。这里的大多数问题都没有显示 Pythonic 的方式来做到这一点。

编辑:我找到了解决方案

destination = '/user/local'
target = '/user/data'
destination_list = os.listdir(destination)
data_dir_list = os.listdir(target)
for fileName in destination_list:
   if not os.path.isdir(os.path.join(destination, fileName)):
       for prefix in data_dir_list:
           if fileName.startswith(prefix):
               shutil.copy(os.path.join(destination, fileName), os.path.join(target, prefix, fileName))

【问题讨论】:

    标签: python transfer


    【解决方案1】:

    这应该可以解决问题

    srcDir = '/user/local'
    targetDir = '/user/data'
    for fname in os.listdir(srcDir):
        if not os.path.isdir(os.path.join(srcDir, fname)):
            for prefix in ['jenjar.dat', 'jenmis.dat']:
                if fname.startswith(prefix):
                    if not os.path.isdir(os.path.join(targetDir, prefix)):
                        os.mkdir(os.path.join(targetDir, prefix))
                    shutil.move(os.path.join(srcDir, fnmae), targetDir)
    

    【讨论】:

    • 此代码只是将文件“jenjar.dat_1”和“jenmis.dat_1”传输到“/user/data”。 “/user/data”目录有两个子目录“jenmis”和“jenjar”。我需要“jenjar.dat_1”进入“jenjar”目录,“jenmis.dat_1”进入“jenmis”目录。
    • 错字:应该是fname而不是frame在第4行。目录也是jenjarjenmis不是jenjar.dat,所以你不应该使用prefix来创建目录。
    • 我对此代码进行了一些更改,并且我已经编辑了我的问题以包含答案。谢谢你帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2014-06-06
    • 2021-07-12
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多