如何通过stutils复制存储在变量中的文件

时间:2013-02-08 02:54:01

标签: python variables file-handling

我想更改作为用户生成的输入(raw_input)的文件的扩展名,但我需要保持原始文件相同,因此该程序将内容从原始文件复制到输出文件。

这是我的计划的一部分,旨在做同样的事情 -

var = raw_input("Enterfile ")
fid = open(var)
import os
name, extension = os.path.splitext(var)
path = os.path.abspath(var)
outputfile = os.path.splitext(var)[0]+ '.asd'
print path
print var
print outputfile
fo = open(outputfile, 'w')
import shutil
shutil.copyfile(var, fo)
data = fo.read()
print data

返回错误 -

File "p.py", line 18, in <module>
    shutil.copyfile(var, fo)
  File "/usr/lib/python2.7/shutil.py", line 68, in copyfile
    if _samefile(src, dst):
  File "/usr/lib/python2.7/shutil.py", line 58, in _samefile
    return os.path.samefile(src, dst)
  File "/usr/lib/python2.7/posixpath.py", line 154, in samefile
    s2 = os.stat(f2)

我不确定我的计划有什么问题,请帮忙。还有更有效的方法来做到这一点。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

方法shutil.copyfile适用于文件名称,而不适用于文件描述符。您不需要打开文件,并且您绝对不希望将文件对象传递给copyfile方法。

代码应该看起来更像这样:(如果您不确定参数类型,请务必检查http://docs.python.org/2/library/shutil.html

import os.path
import shutil

input_filename = raw_input("Enterfile ")
base_name, extension = os.path.splitext(input_filename)
output_filename = base_name + '.asd'

shutil.copyfile(input_filename, output_filename)