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

时间:2017-07-20 10:46:53

标签: python windows python-3.x

我也尝试在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 = [文本文件中的行数],然后让它以那种方式滚动,但看起来好像使用了for line in my_file:我认为仅仅使用line会有意义。

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

BL_ER_D11_fmp000005578_0001_1.txt
BL_ER_D11_fmp000005578_0002_1.txt
BL_ER_D11_fmp000005578_0003_1.txt

我对此代码的问题在于它没有按预期工作,我没有收到任何错误,但文件从一个文件夹移动到另一个文件夹不是没有发生。如果你们有可能指出这个问题的解决方案,我希望如此。

谢谢!

Aydan

2 个答案:

答案 0 :(得分:0)

我会尝试:

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()))

答案 1 :(得分:0)

使用 的 .strip()  提供目的地路径正在解决这个问题

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)