2017-09-17 81 views
2

我完成了复制txt文件并试图用jpg文件做同样的事情。但我不断收到编码错误。 我的代码是:Python - 复制jpg文件时出错

def fcopy(source, target): 
data = '' 
with open(source, encoding='Latin-1') as f: 
    data = f.read() 
    with open(target, 'w') as t: 
      t.write(data) 
fcopy("source.jpeg","dest.jpeg") 

我试图使用编码= UTF8和UTF16也。但没有工作,错误是:

Traceback (most recent call last): 
    File "C:/Users/Mark-II/Desktop/fileCopy.py", line 7, in <module> 
    fcopy("source.jpeg","dest.jpeg") 
    File "C:/Users/Mark-II/Desktop/fileCopy.py", line 3, in fcopy 
    with open(source, encoding='Latin-1') as f: 
FileNotFoundError: [Errno 2] No such file or directory: 'source.jpeg' 
>>> 

请帮助。

+3

你的源文件是否叫做'source.jpeg',并放在与你的程序相同的工作目录中? – Jerrybibo

+0

是@Jerrybibo。 python源文件和图像文件位于相同的路径中。 –

回答

5

尝试以'二进制模式'打开文件。根据open方法的文档,这默认为文本模式。这就解释了为什么它对文本文件起作用,并且在非文本文件(如jpg图像)上失败。以二进制模式打开文件时,您不需要使用指定的参数进行编码。

def fcopy(source, target): 
    with open(source, 'rb') as f: 
     data = f.read() 
    with open(target, 'wb') as t: 
     t.write(data) 

fcopy("source.jpeg","dest.jpeg") 
+1

为什么在文件的顶部将'None'分配给'data'? – SethMMorton

+0

对不起,我的意思是在函数的顶部。 – SethMMorton

+0

你是对的Seth。这不是必需的。我纠正了我的答案。谢谢! – Kyle

0

该代码正在工作。你的问题是与文件路径。请检查您提供的图像路径。

+0

实际上python的源文件和图像文件都不在同一个目录中。所以,一定不会有任何路径问题。 –