【问题标题】:Python/Ubuntu - Copy directory to new directory (incorrect directory path?)Python/Ubuntu - 将目录复制到新目录(目录路径不正确?)
【发布时间】:2017-04-12 11:34:47
【问题描述】:

我正在尝试编写我的第一个 Python 脚本,但进展不顺利。

我正在尝试在我的 Ubuntu 机器上复制整个本地目录,并将其及其内容放在我的操作系统上的不同位置。我做了一些研究,发现distutils.dir_util.copy_tree(src,dst) 应该这样做。

这是我的 backup_images.py 文件的内容:

import os
import sys

src = '/nodeGit/code/assets/images'
dst = '/usr/images_backup'

distutils.dir_util.copy_tree(src,dst)

当我运行它时,我在每一行都得到错误。当我在终端中运行./backup_images.py 时,输出如下:

./backup_images.py: line 1: src: command not found
./backup_images.py: line 2: dst: command not found
./backup_images.py: line 4: syntax error near unexpected token `src,dst'
./backup_images.py: line 4: `distutils.dir_util.copy_tree(src,dst)'

如果我使用 sudo (sudo ./backup_images.py) 运行相同的命令,我会得到完全不同的错误:

./backup_images.py: 1: ./backup_images.py: src: not found
./backup_images.py: 2: ./backup_images.py: dst: not found
./backup_images.py: 4: ./backup_images.py: Syntax error: word unexpected (expecting ")")

根据前几个错误 (src: not found,dst: not found),Python 似乎无法找到我分配了 srcdst 文件的目录。这是正确的吗?

由于不断变化的错误,我不确定如何修复我的代码。

【问题讨论】:

  • 看起来您正在使用 bash shell 而不是 python 二进制文件执行 py 脚本。
  • 是的,这似乎是问题所在。谢谢。现在我收到一个错误,name 'distutils' is not defined,但如果我无法自行修复/找到答案,我可能不得不为此打开一个新问题,嗯?...
  • 你没有导入distutils
  • import distutils 不足以修复错误(执行时没有将任何内容导入目录)...我错过了什么吗?我想我将来会想使用distutils

标签: python django ubuntu syntax


【解决方案1】:

不要使用distutils 来执行此操作。而是使用shutil.copytree() 执行目录及其所有文件和子目录的递归副本。

import shutil

src = '/nodeGit/code/assets/images'
dst = '/usr/images_backup'

try:
    shutil.copytree(src,dst)
except shutil.Error as exc:
    # handle any exception that might occur
    print("Got exception {} while copying {} to {}".format(exc, src, dst))

【讨论】:

    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 2018-04-18
    • 2019-11-01
    • 2021-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多