嵌套for循环仅执行列表的最后一项

时间:2017-10-25 22:45:14

标签: python nested-loops

我正在尝试从文本文件中读取目录列表,并使用它将目录复制到新位置。我下面的代码似乎只完成了列表最后一项的“#Perform copy或move files”循环。有人可以指点我的方向吗?

import os
import shutil

operation = 'copy' # 'copy' or 'move'

text_file = open('C:\User\Desktop\CopyTrial.txt', "r")
lines = text_file.readlines()

for line in lines: 
    new_file_name = line[47:]
    root_src_dir = os.path.join('.',line)
    root_target_dir = os.path.join('.','C:\User\Desktop' + new_file_name)

    # Perform copy or move files. 
    for src_dir, dirs, files in os.walk(root_src_dir):
        dst_dir = src_dir.replace(root_src_dir, root_target_dir)

        if not os.path.exists(dst_dir):
            os.mkdir(dst_dir)

        for file_ in files:
            src_file = os.path.join(src_dir, file_)
            dst_file = os.path.join(dst_dir, file_)
            if os.path.exists(dst_file):
                os.remove(dst_file)
            if operation is 'copy':
                shutil.copy(src_file, dst_dir)
            elif operation is 'move':
                shutil.move(src_file, dst_dir)

text_file.close()

1 个答案:

答案 0 :(得分:2)

readlines()返回的行包括尾随换行符,但是当您从中创建文件名时,不会删除它。它适用于最后一行的原因是因为您的文件不以换行符结束。

使用rstrip()删除尾随空格。

for line in lines:
    line = line.rstrip()
    ...