我在打印到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()
答案 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()