2017-04-24 126 views
0

如何在写入文件时使用变量? 使用的代码IM是:(Python)写入文件时出错

FileX = open("X.txt","r") 
FileY = open("Y.txt","w") 
X = FileX 
FileY.write(FileX) 
FileX.close() 
FileY.close() 

这给错误:

TypeError: write() argument must be str, not _io.TextIOWrapper 

如何解决这个问题?

+0

你想达到什么目的?读取'X.txt'的所有内容并写入'Y.txt'? – kuro

+1

'FileX'是一个文件对象,你正在向'FileY'写入文件对象,'FileY.write'需要'str'不是文件对象。 – JkShaw

+0

您是否试图将文件X的内容复制到文件Y中? –

回答

-3

str = FileX.readLines()

FileY.write(str)

,通过字符串而不是文件

+0

'文件'对象没有'readLines'属性,而是'readline',readline()方法读取文件中的一行。 –

+0

此外,不推荐使用'str'作为变量名称,因为它会隐藏整个['str'](https://docs.python.org/3.6/library/stdtypes.html#str) - 类。 –

+0

猜猜我需要更多地练习我的Python,谢谢你的更正! –

4

FileX当前文件指针,而不是X.txt上下文。若要从X.txtY.txt一切,你将需要使用FileX.read()写的FileX的阅读内容:

FileY.write(FileX.read()) 

也许你也应该考虑使用with声明,

with open("X.txt","r") as FileX, open("Y.txt","w") as FileY: 
    FileY.write(FileX.read()) 
# the files will close automatically 

同时也可作为通过评论建议,您应该使用shutil模块来复制文件和/或目录,

import shutil 
shutil.copy('X.txt', 'T.txt') 
# use shutil.copy2 if you want to make an identical copy preserving all metadata 
+1

或更好:'shutil.copy(x,y)' – jordanm

+0

@jordanm感谢您的建议 – abccd