【问题标题】:IOError: [Errno 22] invalid mode ('rb') or filenameIOError: [Errno 22] 无效模式 ('rb') 或文件名
【发布时间】:2019-11-23 02:02:15
【问题描述】:

我是 python 的初学者,并尝试使用一个非常简单的 shutil 模块 (shutil.copy) 将数据库从多个文件夹复制到备份文件夹中。我收到以下错误。任何帮助表示赞赏。

# importing os module  
import os

#import time module
import time
import datetime

# importing shutil module  
import shutil 


now = datetime.datetime.now()
timestamp = str(now.strftime("%Y%m%d_%H%M%S"))

source5 = "F:/SHARED/SOP/PRE GO LIVE/TEST CASES & SCENARIOS/MASTER/PRE_GO_LIVE_MASTER.accdb"

dest5 = "F:/SHARED/SOP/SB/Python/Destination/PRE_GO_LIVE_MASTER.accdb_"+timestamp+".accdb" 

print("Before copying ")

DB5 = shutil.copy(source5,dest5)

print("After DATABASE has been copied")

Error:
Traceback (most recent call last):
  File "C:\Users\sbasava1\Desktop\Python\Final_Attempt.py", line 101, in <module>
    DB5 = shutil.copy(source5,dest5)
  File "C:\Python27\lib\shutil.py", line 119, in copy
    copyfile(src, dst)
  File "C:\Python27\lib\shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 22] invalid mode ('rb') or filename: 

【问题讨论】:

  • 请在您的问题中包含产生此错误的代码。
  • 我现在已经包含了代码供您查看。感谢您的帮助!

标签: python-2.7


【解决方案1】:

检查您的文件路径,使用 反斜杠 \\ 正斜杠 / 或将您的字符串设为原始字符串 r"..."

# Original path - wouldn't work
path = "c:\location\directory"

# Raw string - would work
path = r"c:\location\directory"

# Double slashes - would work
path = "c:\\location\\directory"

# Forward slashes - would work
path = "c:/location/directory"

考虑了解string literals

如果这没有帮助给我留下评论,那么查看您正在使用的代码的/部分也将有所帮助!

编辑:运行你的脚本并没有给我带来问题:

检查您尝试在其中创建文件的目录是否确实存在

【讨论】:

  • 在此处链接相关答案:stackoverflow.com/a/34704318/28360
  • 我在源路径和目标路径中使用了双斜杠,但仍然没有运气。还尝试了正斜杠,但没有帮助。你如何处理有空格的文件夹名称?我现在添加了代码供审查
  • 我刚刚运行了你的脚本,它运行良好。 F:/SHARED/SOP/SB/Python/Destination 存在吗?
  • 我正在尝试复制访问数据库。
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
相关资源
最近更新 更多