我正在用Python编写一个程序,您可以远程地从程序中写入文本文件。相关守则:
namein = input("What do you want the filename to be? Don't include an extension...\n")
extin = input("What would you like the extension to be? This program supports:\nMicrosoft Word Document: '.docx'\nPlain Text File: '.txt'\nRich Text File: '.rtf'\nPages Document: '.pages'\n")
aw = input("Do you want to append your text file, or rewrite the whole thing? (append/write) ")
if aw == 'append':
textin = input("In the line below, write the text you want to put into your text document!\n\n")
outfile = open(namein + extin, 'a')
outfile.write(textin)
outfile.flush()
print("Great! Now your text file has been updated!")
print("Your text file:\n")
outfile.close()
outfile = open(namein + extin, 'r')
print(outfile.read())
当有人选择非'.txt'文件时,无法打开文件!它只是说错误,文件无法打开。有办法解决这个问题吗?
答案 0 :(得分:1)
从您的代码看起来,“textin”包含常规文本,也许您可以从键盘上读取。您不能以这种方式创建Word文档:Word文档包含标题,字体信息等,因此您需要浏览每种文档的库。例如,要编写Excel电子表格,您可以使用xlwt
python模块。对于Word文档,请参阅this SO question。 是一个用于RTF文件的python库,pyrtf
。
这是你正在做的事情还是我误解了你的简化代码?
PS。不要启用任何允许陌生人在您的服务器上写文件的网络界面,比如说,一年。有办法合理安全地做到这一点,但我相信你还没有为此做好准备。 (有关您将遇到的麻烦的提示,请参阅其他评论。)
答案 1 :(得分:1)
你的代码是低音的。 你应该问他们想要保存文本的文件类型,并根据它设置扩展名。 他们必须把点放在不好的地方......
在此之后,您将使用rtf扩展名或doc保存直接文本。 DocX和pdf不起作用。您需要创建该类型的文档,然后将文本添加为内容。
答案 2 :(得分:0)
我想(但我只是猜测,因为我不太使用Windows),其他格式被视为二进制文件。在这种情况下,您需要打开二进制文件:
outfile = open(namein + extin, 'ab')
然而,我猜可能是对附加到二进制文件的限制......? [显然不是 - 谢谢亚历克西斯]。此外,正如每个人都指出的那样:如果它们是二进制文件,那么这不太可能有用。
更一般地说,我只是想说,尽管你在这里读到了,但这就是我们所学的。通过玩耍和做事,拧紧和学习不该做的事情。我发现Niklas比你聪明,放下你的风格特别刺耳。他可能不承认这一点,但即使他曾经写过愚蠢的小程序,而且 - 震惊 - 不知道所有的答案。保持学习。你的程序很酷。如果它是完美的,你会学到什么?