【问题标题】:Need to move multiple files to a new directory需要将多个文件移动到新目录
【发布时间】:2022-01-09 07:12:35
【问题描述】:

所以我是 python 的新手,非常难过。我有一个文件列表,需要读取文件,然后找到“2012”年,然后将这些文件移动到标有 2012 的新目录中。我已经设法获得了我的文件列表。但一直无法找到将它们全部放入新目录的方法。提前谢谢你

    if filename.startswith("ff_"):
        file=open(os.path.join(base, filename),'r')
        for x in file:
            if '2012' in x:   
               print(filename)```

【问题讨论】:

  • 您可以使用os.makedirs() 创建2012 目录,然后使用shutil.move() 将文件移动到新位置。我喜欢pathlib,所以我个人可能会将路径表示为Path 实例并使用Path.mkdir() 而不是os
  • 这能回答你的问题吗? How to move a file in Python?

标签: python python-3.x file directory move


【解决方案1】:

我希望下面的代码可以解决您的问题。请注意,我使用os.mkdirs() 创建新目录。但你可以试试Path.mkdir()

我创建了四个文本文件。在 4 个中,三个文本文件包含字符串 2012。一个文本文件包含字符串 2020,三个文本文件包含 2012

输入文件:

  1. ff1.txt(包含字符串"2012"
  2. ff2.txt(不包含字符串"2012"
  3. ff_blah1.txt(包含字符串"2012"
  4. ff_blah1_blah2.txt(包含字符串"2012"

我已按步骤分解问题陈述

  1. 查找名称以"ff"开头的文件
  2. 找到文件后,打开所有文件,搜索字符串"2012"
  3. 如果"2012"不存在,则创建新文件夹
  4. 将我们在步骤 2 中找到的所有文件移动到新创建的文件夹 "2012"
import os
import shutil

source_path = '/Users/MacJJ271123/Desktop/PY_Script/'
list_of_files = os.listdir(source_path)

def move_file():
    for file in list_of_files:
        if file.startswith("ff"):
            if '2012' in open(file).read():
                if not os.path.exists(os.path.join(source_path, "2012")):
                    os.mkdir(os.path.join(source_path, "2012"))
                shutil.move(os.path.join(source_path,file), os.path.join(source_path,"2012",file))
                print(file)

move_file()

输出:

MacJ271123-MacBook-Air~  # python3 move_files_stack_oveflow.py
ff_blah1_blah2.txt
ff_blah1.txt
ff1.txt
MacJJ271123-MacBook-Air~  # 

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多