将x文件按lines复制到y文件时,writelines的参数只能 list 格式才运行,函数不行!?

跟着课件“Python文件操作和访问数据库-存储文件(第三课)”仿写时遇到了奇怪的问题。

课件中将x文件按lines复制到y文件时,用y.writelines(x.readlines()),直接成功复制。
我就只能得到空白的y.txt文档?

#代码部分
x= open("x.txt","r")
y= open("y.txt","w")
print(x.readlines()) #到这里都对
#情况一:失败
a = x.readlines()
y.writelines(a)
得到空白文档

#情况二:成功
y.writelines(['2022/04/28,4564\n', '2022/05/25,5745'])
得到文档内容
2022/04/28,4564
2022/05/25,5745

#情况三:失败——(课件方法)
y.writelines(x.readlines())
得到空白文档

这是语法,所以必须这么写

img

或者你改成
y.writelines([x.readlines()])

望采纳

>>> x=open("D:/x.txt","r")
>>> y=open("D:/y.txt","w")
>>> a=x.readlines()
>>> print(a)
['2022/04/28,4564\n', '2022/05/25,5745']
>>> y.writelines(a)
>>> y.close()
>>> y=open("D:/y.txt","r")
>>> print(y.readlines())
['2022/04/28,4564\n', '2022/05/25,5745']
>>> x.close()
>>> y.close()
>>> x=open("D:/x.txt","r")
>>> y=open("D:/y.txt","w")
>>> y.writelines(x.readlines())
>>> y.close()
>>> y=open("D:/y.txt","r")
>>> print(y.readlines())
['2022/04/28,4564\n', '2022/05/25,5745']
>>> y.close()

在本机测试没发现问题,你是不是忘记 **y.close()**;另外在写的时候你本地最好不要打开正在操作的txt文件
建议你使用with语句操作

>>> copydata = None
>>> with open("D:/x.txt","r") as x:
    copydata = x.readlines()    
>>> with open("D:/y.txt","w") as y:
    y.writelines(copydata)    
>>> with open("D:/y.txt","r") as y:
    y.readlines()    
['2022/04/28,4564\n', '2022/05/25,5745']

我换了台机器重新做就成功了,也许是pycharm配置的问题???感谢回答anyway,上次也的确没有关闭txt文件。

x= open("text.txt","r")
y= open("y.txt","w")
y.writelines(x.readlines())
x.close()
y.close()