当前位置: 首页 > 知识库问答 >
问题:

如何在python中将文本文件中列出的文件从一个文件夹移动到另一个文件夹

澹台成龙
2023-03-14

我也在尝试用Python创建一个脚本来读取文本文件。在文本文件的每一行上,都有一个文件名。我希望脚本在文本文件的每一行中循环,并将带有文件名的文件从循环的当前行、从源文件夹移动到特定的目标。

希望这段代码能更准确地说明我在做什么:

import shutil

dst = "C:\\Users\\Aydan\\Desktop\\1855"

with open('1855.txt') as my_file:
    for line in my_file:
        src = "C:\\Users\\Aydan\\Desktop\\data01\\BL\\ER\\D11\\fmp000005578\\" + line
        shutil.move(src, dst)

我想把文件的内容和特定的文件名放到一个数组中,但是我有62700个可能的文件名,所以我想如果它只是在循环到每一行时移动文件,那么它会更有效率吗?

我还想到了使用迭代器(或任何你称之为迭代器的东西)设置I=[文本文件中的行数],然后让它以这种方式滚动,但是看到好像在我的文件中使用了行:我认为只使用是有意义的。

对于测试,文本文件包含:

BL_ER_D11_fmp000005578_0001_1.txt
BL_ER_D11_fmp000005578_0002_1.txt
BL_ER_D11_fmp000005578_0003_1.txt

我在这段代码中遇到的问题是,它没有按预期工作,我没有收到任何错误,但是没有将文件从一个文件夹移动到另一个文件夹。我希望你们能指出解决这个问题的方法

谢谢

艾丹

共有2个答案

曹高阳
2023-03-14

在提供目标路径的同时使用. street()解决了这个问题

import shutil
dst = r"C:/Users/Aydan/Desktop/1855/"

with open('test.txt') as my_file:
    for filename in my_file:
        file_name  = filename.strip()
        src = r'C:/Users/Aydan/Desktop/data01/BL/ER/D11/fmp000005578/'+ file_name    
        shutil.move(src, dst + file_name)
吉泰宁
2023-03-14

我会尝试:

import os

dst = "C:\\Users\\Aydan\\Desktop\\1855\\" # make sure this is a path name and not a filename

with open('1855.txt') as my_file:
    for filename in my_file:
        src = os.path.join("C:\\Users\\Aydan\\Desktop\\data01\\BL\\ER\\D11\\fmp000005578\\", filename.strip() ) # .strip() to avoid un-wanted white spaces
        os.rename(src, os.path.join(dst, filename.strip()))
 类似资料: