文件处理,写作,阅读

时间:2017-10-31 11:34:57

标签: python file error-handling

我偶然发现了一个文件处理问题, 第二行无缘无故地给你一个值9 第三行给出错误io.UnsupportedOperation:不可读

c = open("Test.txt", "w+")
c.write("Hey there")
content = c.read()
c.close

print (content)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

  

第二行无理由地为您提供值

这是Python 3中write()函数的返回值。该值是写入文件的字符数。

  

第三行给出错误io.UnsupportedOperation:不可读

不确定你在这里做了什么。在write()之后,文件指针位于文件的末尾。如果您确实使用w+打开了文件,则不应该看到错误,但应该从文件中读取0个字符。如果您使用模式w打开文件,那么您将获得io.UnsupportedOperation异常,因为该文件未打开以供阅读。检查测试时使用的模式。

试试这个:

with open('Test.txt', 'w+') as c:
    n = c.write("Hey there")
    print('Wrote {} characters to file'.format(n))

    content = c.read()
    print('Read {} characters from file'.format(len(content)))
    print('{!r}'.format(content))

    _ = c.seek(0)    # move file pointer back to the start of the file
    content = c.read()
    print('After seeking to start, read {} characters from file'.format(len(content)))
    print('{!r}'.format(content))

输出:

Wrote 9 characters to file
Read 0 characters from file
''
After seeking to start, read 9 characters from file
'Hey there'