gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:29:58 25 4
gpt4 key购买 nike

我正在尝试从文本文件中读取目录列表,并使用它将目录复制到新位置。我下面的代码似乎只完成了列表最后一项的“#Perform copy or 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()

最佳答案

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

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

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

关于python - 嵌套 for 循环仅执行列表的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com