gpt4 book ai didi

python - 使用 urlencode、urlopen 上传文件 - 除非之后调用 post.read(),否则文本会被截断?

转载 作者:行者123 更新时间:2023-12-01 04:53:07 24 4
gpt4 key购买 nike

我遇到了一些非常奇怪的行为,我希望有人可以向我解释发生了什么事。我已经阅读了官方的 Python 文档,但没有看到任何可以解释我所看到的内容的内容 - 如果我遗漏了某些内容,请为我指出。

我有一个(大型)Python 脚本,它需要大约 150k 的文本,保存在“content”变量中,并将其上传到远程系统上的 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”写入的内容在看似随机选择的位置被截断,具体取决于“内容”的长度 - 除非我在我的 urlopen 调用之后调用 post.read() Python 脚本

我对 Python 很陌生,对 Perl 也很陌生,但我的理解是它不应该这样工作。当我在 Python 脚本中本地调用 post.read() 时,为什么远程 Perl 脚本会写入整个文件?

最佳答案

您需要在请求之后的“post”中对响应对象执行一些操作。如果在程序中的该点之后没有任何对“post”的引用(例如 post.read()、post.close() 等),python 会将其优化掉并让响应对象成为垃圾POST 完成之前的收集。

参见:should I call close() after urllib.urlopen()?了解更多信息。

关于python - 使用 urlencode、urlopen 上传文件 - 除非之后调用 post.read(),否则文本会被截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com