Python脚本保存/复制到特定目录

Posted

技术标签:

【中文标题】Python脚本保存/复制到特定目录【英文标题】:Python Script Saving/Copying into specific directory 【发布时间】:2019-10-23 17:52:18 【问题描述】:

我正在尝试编写一个将文件保存在给定目录中的脚本,但是每当我运行它时都会收到 NotADirecotryError[WinError 267]。关于我可能做错的任何想法或提示?

import shutil
import os

src = 'C:\\Users\\SpecificUsername\\Pictures\\test.txt\'
dest = 'C:\\Users\\SpecificUsername\\Desktop'
files = os.listdir(src)

for file in files:
    shutil.copy(file, dest)

for file in files:
    if os.path.isfile(file):
        shutil.copy(file,dest) ```

【问题讨论】:

您可能希望您的路径作为原始字符串,并且您不希望最后有'\'src = r'C:\Users\SpecificUsername\Pictures\test.txt'dest = r'C:\Users\SpecificUsername\Desktop'。现在src 根本不是一个目录,那么你为什么要尝试listdir?这是一个文本文件。另外作为旁注,请查看pathlib 模块 【参考方案1】:

这里发生了几件事:

    您可以在路径中使用正斜杠。 您的srctest.txt 文件,而不是目录,因此您无法使用os.listdir() 对其进行迭代。 您还可以将两个循环合并在一起,因为它们循环的是同一组数据。 shutil.copy() 将文件路径作为输入,而您传递的是文件名。

以下代码应该可以工作,并且它还可以按原样复制目录:

import shutil
import os

basepath = "C:/Users/SpecificUsername/"
src = "Pictures/"
dest = "Desktop/"
files = os.listdir(os.path.join(basepath, src))

for filename in files:
    filepath = os.path.join(basepath, src, filename)
    if (os.path.isfile(filepath)):
        print("File: " + filename)
        shutil.copy(filepath,dest)
    else:
        print("Dir: " + filename)
        shutil.copytree(filepath, os.path.join(dest, filename))

希望对你有帮助!

【讨论】:

以上是关于Python脚本保存/复制到特定目录的主要内容,如果未能解决你的问题,请参考以下文章

Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构

如何将文件复制到 Python 脚本中的特定文件夹? [复制]

如何使用 Python PIL 将图像保存到特定目录?

如何指示脚本的当前目录不是我? [复制]

如何保存对 Python 列表所做的更改,以便在重新运行脚本后更新? [复制]

如何确保脚本由特定版本的 python 执行? [复制]