【问题标题】:'with open()' not working? [closed]'with open()' 不起作用? [关闭]
【发布时间】:2013-01-19 21:59:21
【问题描述】:

我有代码:

filename = "C:/users/patrik/documents/mypython.txt"
with open(filename) as f:
    if f.readlines()[0] == "patrik's file": #first line
        f.write("This file has been read by patrik!")

为什么它不起作用?我没有收到任何错误,之后文件内容变得混乱,我做错了什么?

【问题讨论】:

  • 在什么情况下不起作用?
  • 文件内容真的很乱,每次看起来都不一样,有一些奇怪的字符我不能在这里粘贴...
  • 当你说“没有错误”是指AttributeError: 'str' object has no attribute 'readlines'
  • 不要命名变量file,它会影响内置变量。此外,您以只读方式打开文件,因此无法写入。而file 是字符串,f 是文件,所以file.readlines() 不起作用。
  • @Eric 不,抱歉,我修复了 filef 的组合,我在我的程序中正确设置了 :) Martin 好的,谢谢,我会重命名它!

标签: python file python-3.x io


【解决方案1】:

要对文件执行读写操作,您可以选择以下模式之一:

'r+'

打开一个文件进行读写。文件指针将位于 文件的开头。

'a+'

打开一个文件以进行追加和读取。文件指针位于 如果文件存在,则文件末尾。该文件在追加中打开 模式。如果文件不存在,则创建一个新文件以供读取 和写作。

注意file是python的内建函数,所以不要用它作为变量名

【讨论】:

  • 另外,file 是 Python 内置的,请使用另一个变量名。
  • 呃抱歉在我的实际脚本中有f!如果我也想阅读它,我必须打开它两次吗?
  • 他应该以r+ 模式打开文件。读写。 w 将首先清除文件。
  • @MartijnPieters 可能是a+ 是一个更好的主意吗?
  • @AshwiniChaudhary:然后文件指针被移动到文件的末尾,而在某些平台上你不能从那里向前移动它。
猜你喜欢
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 2013-12-30
  • 2016-03-19
  • 2014-10-05
相关资源
最近更新 更多