在Python 2.7中复制文件

4

好的,我有另一个问题。我实现了错误检查,但出于某种原因它仍然无法正常工作。我仍然会得到Python错误,而不是我在程序中刚写的错误。

Traceback (most recent call last):
  File "E:/python/copyfile.py", line 31, in <module>
    copyFile()
  File "E:/python/copyfile.py", line 8, in copyFile
    file1 = open(source,"r")
IOError: [Errno 2] No such file or directory: 'C:/Users/Public/asdf.txt'

1
只是提供信息,这里有shutil.copyfile(src, dst) - squiguy
那么,当您传入无效的文件名时,您的程序会做什么?这应该让您知道在尝试读/写文件时要查找什么。您知道如何实现异常处理吗?如果不知道,请快速搜索“python异常处理”,看看能找到什么。祝你好运 :) - bedwyr
可能是 https://dev59.com/-V3Va4cB1Zd3GeqPFPBr 的重复问题。 - Yariv
追踪(最近的调用在最后): 文件“<pyshell#7>”,第1行,在<module>中: copyFile() 文件“E:/python/copyfile.py”,第6行,在copyFile中: file1 = open(source,"r") IOError: [Errno 2] 没有这样的文件或目录:“/Users/Public/asdf.txt”这是我得到的错误。 - Aegg
好的,我解决了...多亏了你们:) 问题在于我的try和except语句都放错了位置。通过快速移动,问题很快得到了解决。再次感谢你们。 - Aegg
请不要篡改您的问题,现在您已经得到了答案。问题不仅仅是为了提问者的利益,而且还为未来的许多访问者提供帮助。 - Brad Larson
2个回答

9

我不被允许使用任何内置函数。无论如何,我已经更新了它...但显然检查还不太对。 - Aegg

1

我宁愿让你自己写:

(保留html,不解释)
import os
import hashlib

def md5ChkSum(_file):  # Calculates MD5 CheckSum
    with open(_file, 'rb') as fp:
        hash_obj = hashlib.md5()

        line = fp.readline()
        while line:
            hash_obj.update(line)
            line = fp.readline()
        return hash_obj.hexdigest()

def copier(_src, _dst):
    if not os.path.exists(_src):
        return False

    _src_fp = open(_src, "r")
    _dst_fp = open(_dst, "w")

    line = _src_fp.readline()
    while line:
        _dst_fp.write(line)
        line = _src_fp.readline()
    _src_fp.close()
    _dst_fp.close()

    if md5ChkSum(_src) == md5ChkSum(_dst):
        return "Copy: SUCCESSFUL"
    return "Copy: FAILED"

res = copier(r"/home/cnsiva/6.jpg", r"/home/cnsiva/6_copied.jpg")
if not res:
    print "FILE Does not Exists !!!"
else: print res

输出:

Copy: SUCCESSFUL

1
@khachik,这里我们不拘泥于样式,有没有问题?检查功能!!! - Siva Cn
对于这个功能,有shutil,不需要重新造轮子。 - khachik
1
@khachik,问题不在于使用“内置”方法。 - Siva Cn
shutil 不是内置模块,而且我也没有看到有关内置模块的问题。 - khachik
请查看另一个答案中的评论。 - Siva Cn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接