如何在python 3.7.0中使用os模块移动具有相似名称的文件

时间:2018-11-08 09:57:09

标签: python

我想使用python 3.7.0中的os模块将名称相似的文件从一个目录移动到另一个目录。例如,我有名称为A1B1,A1B2,A2B1,A2B2等的文本文件。如何在名为A1的目录中移动名称为A1Bn(n = 1,2,3 ...)的文件和在名为A2的目录中移动名称为A2Bn(n = 1,2,3 ...)的文件。如何检查文件名。 谢谢...

4 个答案:

答案 0 :(得分:0)

使用globos(也可以使用shutil):

import glob
import os

a1_files = glob.glob('A1*')
a2_files = glob.glob('A2*')

for filename in a1_files:
    os.rename(filename, os.path.join('A1', filename))

for filename in a2_files:
    os.rename(filename, os.path.join('A2', filename))

答案 1 :(得分:0)

vc_map(
array(
  'name' => __('Student Clubs Grid', 'text-domain'),
  'base' => 'vc_student_clubs_grid',
  'description' => __('Student Clubs Grid', 'text-domain'),
  'category' => __('Custom Shortcode', 'text-domain'),
  'icon' => get_template_directory_uri().'/assets/img/vc-icon.png',
  "params" => array(
    array(
      'type' => 'dropdown',
      'heading' => __( 'Gallery start at:',  "my-text-domain" ),
      'param_name' => 'columns',
      'value' => array(
        __( 'None',  "my-text-domain"  ) => '',
        __( '2 Column',  "my-text-domain"  ) => 'two_column',
        __( '3 Column',  "my-text-domain"  ) => 'three_column',
      )
    ),
    array(
      "type" => "param_group",
      "heading" => __( "Homepage Slider", "my-text-domain" ),
      "param_name" => "slider_attr",
      "params" => array(
         array(
          'type' => 'attach_image',
          'heading' => __( 'Upload Picture', 'pt-vc' ),
          'param_name' => 'upload_slider_picture',
         ),
         array(
          'type' => 'checkbox',
           'heading' => __( 'Add Thumbnail Navigation', 'pt-vc' ),
           'param_name' => 'is_thumb_naved',
           'dependency'    => array(
              'element'   => 'columns',
              'value'     => 'two_column',
            )
          ),

        )
    );
  )
)
);

答案 2 :(得分:0)

使用os.listdir从文件夹中获取所有文件,并使用os.rename移动文件。

import os


def file_reader():
    # get files
    for files in os.listdir("/path/to/your/files"):
        if files.endswith(".txt"):
            try:
                os.mkdir("A1")
                os.mkdir("A2")
            except FileExistsError:
                pass
            if files.startswith("A1"):
                os.rename(files, os.path.join("A1", files))
            if files.startswith("A2"):
                os.rename(files, os.path.join("A2", files))


if __name__ == "__main__":
    file_reader()

答案 3 :(得分:0)

这是我前一段时间用来实现类似效果的经过调整的脚本:

from os import getcwd
from os import listdir
from os import makedirs

from os.path import join
from os.path import exists
from os.path import abspath

from shutil import move

current_path = getcwd()

for file in listdir("."):
    if file.startswith("A"):
        full_path = abspath(file)
        folder_prefix = file[:2]

        folder_path = join(current_path, folder_prefix)
        if not exists(folder_path):
            makedirs(folder_path)

        move(full_path, folder_path)

它将复制当前目录中所有以A开头的文件,并将它们移到各自的文件夹中。如果不存在,它也会预先制作文件夹。您可以通过添加自己的路径来调整自己的喜好,但这显示了总体思路。