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

0 投票
1 回答
2277 浏览
提问于 2025-04-17 15:11

我想要改变一个文件的扩展名,这个文件是用户输入的(通过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

这个方法 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)

撰写回答