【问题标题】:shutil.move conditional errorsshutil.move 条件错误
【发布时间】:2018-09-22 06:47:33
【问题描述】:

我有一个简短的 python 脚本(称为 VaultTransferScript.py),它应该将一个 zip 文件从一台机器传输到另一台机器。目标机器是映射的网络附加存储机器,我已将其指定为 Z: 驱动器。 脚本是:

import shutil
import os
from datetime import datetime
time_stamp = datetime.now().strftime('%Y-%m-%d_%H_%M')
title_str = 'VaultBackup.zip'
name = time_stamp + title_str 
shutil.move('C:\\Users\\Hawking\\Desktop\\VaultBackups\\MyBackup.zip', 
    os.path.join('Z:\\VaultBackups\\'+name))   

我可以从notepad++运行工具运行这个脚本,使用

cmd /C  python "$(FULL_CURRENT_PATH)"

但是在批处理脚本中运行它:

echo off
C:\Users\Hawking\AppData\Local\Programs\Python\Python37-32\python.exe C:\Users\Hawking\Desktop\VaultBackupTransfer.py

结果:

C:\Users\Hawking\Desktop>echo off
Traceback (most recent call last):


File "C:\Users\Hawking\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 557, in move
    os.rename(src, real_dst)
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\Hawking\\Desktop\\VaultBackups\\MyBackup.zip' -> 'Z:\\VaultBackups\\2018-09-21_14_30VaultBackup.zip'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Hawking\Desktop\VaultBackupTransfer.py", line 7, in <module>
    shutil.move('C:\\Users\\Hawking\\Desktop\\VaultBackups\\MyBackup.zip', os.path.join('Z:\\VaultBackups\\'+name))
  File "C:\Users\Hawking\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 571, in move
    copy_function(src, real_dst)
  File "C:\Users\Hawking\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 257, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Users\Hawking\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 121, in copyfile
    with open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: 'Z:\\VaultBackups\\2018-09-21_14_30VaultBackup.zip'

我调用 python 脚本的方式有什么不同,为什么它会从批处理脚本中出错,而不是 notepad++?

【问题讨论】:

  • os.path.join('Z:\\VaultBackups\\'+name) -> os.path.join('Z:\\VaultBackups', name) 甚至是os.path.join('Z:', 'VaultBackups', name)

标签: python-3.x batch-file notepad++


【解决方案1】:

您可能在 Notepad++ 和命令提示符下以不同的用户权限运行 Python 程序。或者,可以使用另一个 Python VM。虽然,没有什么特别让我觉得后者是真的。

【讨论】:

  • @Erik 那是您选择并投票赞成答案的时候:)
  • 我总是有这个问题——看来我没有正式接受答案的要点。我确实赞成它
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 2020-07-19
  • 2015-05-02
  • 2021-11-24
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多