用Python写入txt文件

时间:2016-05-12 23:40:57

标签: python output text-files

我在打印到txt文件时遇到问题。该文件包含以字节存储的信息。无论我尝试什么,我只能在shell中打印输出。这就是我所拥有的 - 欢迎任何帮助。

def main():
    with open("in.txt", "rb") as f:
        byte = f.read(1)
        while byte != "":
            print ord(byte), 
            byte = f.read(1)


with open('out.txt','w') as f:
    if __name__ == '__main__':
        f.write(main())
        close.f()

3 个答案:

答案 0 :(得分:2)

这是对各种功能和方法的基本误解。您正在将main()的返回值写入文件,期望main print()次调用转到该文件。它不会那样工作。

def main():
    with open("in.txt", "rb") as f, open('out.txt','w') as output:
        byte = f.read(1)
        while byte != "":
            output.write(str(ord(byte))) 
            byte = f.read(1)

if __name__ == '__main__':
    main()

使用file.write()来编写字符串(或字节,如果您正在使用当前不存在的那种输出)到文件中。要使代码生效,main()必须返回包含您要编写的内容的完整字符串。

答案 1 :(得分:1)

您正在print ord(byte)内拨打main()。这将打印到控制台。

您还在调用f.write(main()),它似乎假设main()返回一个值,但它没有。

看起来您打算将print ord(byte)替换为将所需输出附加到字符串的语句,然后return来自main()函数的字符串。< / p>

答案 2 :(得分:1)

您需要从函数main返回字符串。您正在打印它并且什么都不返回。这将组装字符串并将其返回

def main():
    with open("in.txt", "rb") as f:
        ret = ""
        byte = f.read(1)
        while byte != "":
            ret = ret + byte 
            byte = f.read(1)
    return ret


with open('out.txt','w') as f:
    if __name__ == '__main__':
        f.write(main())
        close.f()