我遇到了一些非常奇怪的行为,我希望有人可以向我解释发生了什么。我已经看过官方的 Python 文档,但没有看到任何解释我所看到的东西 - 如果我遗漏了什么,请为我指出。
我有一个(大)python 脚本,它包含价值约 150k 的文本,位于“内容”变量中,并将其上传到远程系统上的 Perl 脚本以进行日志记录。它使用 urllib 来执行此操作:
thash = {'file_name': file_name, 'contents':content}
upload = urlib.urlencode(thash)
post = urlib.urlopen("http://path.to.perl.script/log_writer.pl", upload)
#post.read()
问题是文件“log_writer.pl”写入在看似随机选择的位置被截断,具体取决于“内容”的长度 -除非我在我的 Python 脚本中的 urlopen 调用之后调用 post.read()。
我是 Python 新手,对 Perl 还是很陌生,但我的理解是它不应该以这种方式工作。当我在 Python 脚本中本地调用 post.read() 时,为什么远程 Perl 脚本会写入整个文件?