Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过stutil复制存储在变量中的文件_Python_Variables_File Handling - Fatal编程技术网

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

Python 如何通过stutil复制存储在变量中的文件,python,variables,file-handling,Python,Variables,File Handling,我想更改作为用户生成输入(原始输入)的文件的扩展名,但我需要保持原始文件不变,因此该程序将内容从原始文件复制到输出文件 这是我计划的一部分,目的也是这样- 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' pr

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

这是我计划的一部分,目的也是这样-

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)
文件“p.py”,第18行,在
copyfile(var,fo)
文件“/usr/lib/python2.7/shutil.py”,第68行,在copyfile中
如果_samefile(src,dst):
文件“/usr/lib/python2.7/shutil.py”,第58行,在同一文件中
返回os.path.samefile(src、dst)
文件“/usr/lib/python2.7/posixpath.py”,第154行,在samefile中
s2=操作系统状态(f2)
我不确定我的程序出了什么问题,请帮忙。还有更有效的方法吗。
提前感谢。

该方法使用的是文件名,而不是文件描述符。您不需要打开文件,而且您肯定不想将文件对象传递给copyfile方法

代码应该更像这样:(并且确保检查是否不确定参数类型)


错误似乎不完整。@Jermaine Xu我已从终端复制了整个错误消息。另外,您正在尝试读取一个仅打开用于写入的文件。@monkut我尝试了使用“r”和“w”模式,无论使用哪种模式,都会弹出相同的错误时间,这确实解决了问题,但我想我在问题中没有说清楚,我需要打开文件,因为我的程序要求我执行同样的操作,并且我需要能够从输出文件中读取稍后在程序中使用的行。您仍然可以在复制之前或之后打开文件,但如果要使用
shutil.copyfile
,则必须向其传递文件名字符串。
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)