上载带有urlencode的文件,urlopen文本被截断,除非读后()是在之后调用的?

2024-09-30 20:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在经历一些非常奇怪的行为,我希望有人能向我解释发生了什么。我已经阅读了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_编剧.pl根据“content”的长度,writes在一个看似随机选择的位置被截断,除非我调用读后()在Python脚本中的urlopen调用之后。你知道吗

我对Python还很陌生,对Perl也很陌生,但我的理解是它不应该以这种方式工作。为什么远程Perl脚本在我调用读后()在我的Python脚本中是本地的吗?你知道吗


Tags: name脚本log远程contentpostperlfile
1条回答
网友
1楼 · 发布于 2024-09-30 20:21:22

您需要在请求之后对“post”中的response对象执行一些操作。如果在你的程序中没有任何“post”的引用(例如。读后(), 后关闭(),等等),python将对其进行优化,并在POST完成之前,让响应对象有资格进行垃圾收集。你知道吗

有关详细信息,请参见:should I call close() after urllib.urlopen()?。你知道吗

相关问题 更多 >