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)