gpt4 book ai didi

python - Shutil 不存储随机选择/复制文件的路径?

转载 作者:行者123 更新时间:2023-11-30 23:44:25 32 4
gpt4 key购买 nike

[编辑:请参阅下面的最终代码]我使用下面的代码从源目录中随机选择 5 个文件,然后将它们复制到新目录。它给了我一个 IO 错误,其中显示“不存在这样的文件或目录‘x’”,其中“x”是不带目录路径的文件名。不知何故,它没有将路径存储在"file"中。我查看了这个论坛以及 Shutil 教程,但我无法弄清楚。 (顺便说一句,这与我问的上一个问题类似,但代码和错误发生了变化。当我得到它的工作时,我将发布该问题的最终代码)。提前致谢!

import os
import shutil
import random
import os.path

src_dir = 'C:\\'
target_dir = 'C:\\Test'
src_files = (os.listdir(src_dir))
def valid_path(dir_path, filename):
full_path = os.path.join(dir_path, filename)
return os.path.isfile(full_path)
files = [f for f in src_files if valid_path(src_dir, f)]
choices = random.sample(files, 5)
for files in choices:
shutil.copyfile(files, target_dir)
print ('Finished!')

最佳答案

尝试改变

shutil.copyfile(files, target_dir)

shutil.copyfile(os.path.join(src_dir, files), target_dir)

您仅使用src_dir来测试完整路径是否有效,然后就不会再使用它。

编辑:考虑以下事项

src_dir = 'C:\\'
target_dir = 'C:\\Test'
# Create a list of filenames
src_files = (os.listdir(src_dir))
# Create a list of full paths (valid)
src_paths = [f for f in [os.path.join(src_dir, f) for f in src_files] if os.path.isfile(f)]
# Do selection
choices = random.sample(src_paths, 5)
for path in choices:
print path
shutil.copy(path, target_dir)
print ('Finished!')

请注意,我将 copyfile 更改为 copy,因为您指定的是目标目录,而不是目标文件。

您还可以在字符串前添加前导 r 以使它们成为 raw strings以避免必须转义反斜杠:

dir = 'C:\\Temp\\' # Is the same as
dir = r'C:\Temp\'

但是 SO 语法荧光笔不喜欢它,所以我把它拿出来了

关于python - Shutil 不存储随机选择/复制文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092268/

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