为什么打印功能在open_with中不起作用?

时间:2017-06-30 14:44:51

标签: python python-3.x

我正在启动一个模块,它打开一个文件,读取它,做一些东西,然后附加到它上面。但是,我试图先查看文件中的内容。这是该计划的开始:

def addSkill(company):
    with open("companies.txt", "a+") as companies:
        for line in companies:
            print('ok')
            print(line.rstrip('\n'))
        companies.write(company + '\r\n')

    companies.close()

两种打印功能都不起作用。文档中有文字。它根据要求附加到它。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

只需使用'r+'打开,然后在记忆中保存所需的一切,然后它会自动写在最后。因为你的文件描述符将在最后。

'a'中打开文件会自动将文件描述符放在最后,因此,您无法看到之前写的内容。

e.g

def addSkill(company):
    with open('companies.txt', 'r+') as fd:
        list_of_companies = fd.readlines()
        fd.write(company + '\n')

list_of_companies.append(company) # adding the last company to the full list.
print('\n'.join(list_of_companies)) # print each company with a '\n'.

奖金:您的close()方法使用with无效,python会为您执行此操作。

在任何情况下,当您不确定某项功能的选项时,请RTFM: open()

  • 'r'开放阅读(默认)
  • 'w'开放写入,首先截断文件
  • 'x'打开以进行独占创建,如果文件已存在则失败
  • 'a'打开写入,如果文件存在则附加到文件的末尾
  • 'b'二进制模式
  • 't'文字模式(默认)
  • '+'打开磁盘文件进行更新(读写)
  • 'U'通用换行模式(已弃用)