python中超长字符串相加如何处理

oppochen 2011-09-12 08:28:39
如题,一般的相加有时会抛出异常
...全文
400 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
oppochen 2013-06-26
  • 打赏
  • 举报
回复
引用 15 楼 iambic 的回复:
[Quote=引用 12 楼 oppochen 的回复:] 在python IDLE下也是调试模式么? 这段代码 在IDLE下也是报错的 [/Quote] 这些软件我都没用过,无法直接回答你。可靠的验证方式是按我9楼说的,别用那些额外的的IDE环境,直接用python.exe执行。看能不能成功。如果能成功,说明是你用的开发工具有问题。如果不能成功,再重新贴下异常栈看看。 另外你的python是32位还是64位的?机器的物理内存多大?
回头来看这个问题,真是非常感谢当年的帮助,不过我现在知道,当时应该是cmd的内存限制导致的,直接read大文件在cmd下会报error
iambic 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 oppochen 的回复:]
我打算上传到http服务器,服务器端提供的php脚本固定了,我只能传一个整的body,所以只能这样,纠结很久了
[/Quote]

你对http协议的理解有误。这种限制根本不可能存在。
iambic 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 oppochen 的回复:]
我又遇到别的问题了,同样的py脚本,用pythonwin编译,和eclipse编译出不同的结果,有这种可能吗?而且,性能上的差异很大,比如这句 Python ……
[/Quote]
再正常不过了。从你的异常来看,你是在debug模式下执行的代码。debug模式比正常执行在性能上相差几十几百几千倍都不为过。
iambic 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oppochen 的回复:]

我把异常贴出来,跟上面说的一样memoy error
Traceback (most recent call last):
File "D:\Software\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 307, in RunScript
debugger.run(code……
[/Quote]
从命令行直接执行脚本,不要在pythonwin的debugger里执行。
oppochen 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 i_nbfa 的回复:]

太大就不要直接都读进来了,边读边写
[/Quote]
我打算上传到http服务器,服务器端提供的php脚本固定了,我只能传一个整的body,所以只能这样,纠结很久了
oppochen 2011-09-12
  • 打赏
  • 举报
回复
我把异常贴出来,跟上面说的一样memoy error
Traceback (most recent call last):
File "D:\Software\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 307, in RunScript
debugger.run(codeObject, __main__.__dict__, start_stepping=0)
File "D:\Software\Python24\Lib\site-packages\pythonwin\pywin\debugger\__init__.py", line 60, in run
_GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
File "D:\Software\Python24\Lib\site-packages\pythonwin\pywin\debugger\debugger.py", line 595, in run
exec cmd in globals, locals
File "C:\Users\oppochen\Desktop\appendix\FileTranslate2.0\Script1.py", line 7, in ?
up_data = data1 + data2
MemoryError
I_NBFA 2011-09-12
  • 打赏
  • 举报
回复
太大就不要直接都读进来了,边读边写
oppochen 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iambic 的回复:]

不要瞎catch,你又不处理你catch干什么。世界上最令人讨厌的问题莫过于缩进没对齐和异常被无视。
把所有的try..catch都去掉,然后把出错的完整异常贴出来看下(带行号的)。
[/Quote]

我又遇到别的问题了,同样的py脚本,用pythonwin编译,和eclipse编译出不同的结果,有这种可能吗?而且,性能上的差异很大,比如这句
fobj = open('path', 'rb')
data = fobj.read()
在pythonwin下当文件过大时(达到200M以上),python无法正确执行,会报memory error 但是eclipse就可以正常执行
iambic 2011-09-12
  • 打赏
  • 举报
回复
不要瞎catch,你又不处理你catch干什么。世界上最令人讨厌的问题莫过于缩进没对齐和异常被无视。
把所有的try..catch都去掉,然后把出错的完整异常贴出来看下(带行号的)。
oppochen 2011-09-12
  • 打赏
  • 举报
回复
print 'asd'

try:
print 'dsa'
up_file = open('e:\\e.zip',"rb")
data1 = up_file.read(31900)
data2 = up_file.read()
up_data = data1 + data2
#print up_data
print "open and read file successful"
except Exception,e:
print e
print "Open/Read file %s failed\n"
#return
up_file.close()
print 'asd'
oppochen 2011-09-12
  • 打赏
  • 举报
回复
大概200-300M的字符串,能够接到exception输出出来好像是空的
iambic 2011-09-12
  • 打赏
  • 举报
回复
多长?抛什么错?
oppochen 2011-09-12
  • 打赏
  • 举报
回复
感激不尽啊,我刚学python没几天,老大让我改一个以前实习生写的http上传的py文件,搞了很长时间了,十分感谢你的不吝赐教。分给你了 呵呵
iambic 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 oppochen 的回复:]
在python IDLE下也是调试模式么? 这段代码 在IDLE下也是报错的
[/Quote]
这些软件我都没用过,无法直接回答你。可靠的验证方式是按我9楼说的,别用那些额外的的IDE环境,直接用python.exe执行。看能不能成功。如果能成功,说明是你用的开发工具有问题。如果不能成功,再重新贴下异常栈看看。
另外你的python是32位还是64位的?机器的物理内存多大?
iambic 2011-09-12
  • 打赏
  • 举报
回复
你有试过多次send吗(当然,每次send一部分)?
oppochen 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 iambic 的回复:]

引用 8 楼 oppochen 的回复:
我打算上传到http服务器,服务器端提供的php脚本固定了,我只能传一个整的body,所以只能这样,纠结很久了


你对http协议的理解有误。这种限制根本不可能存在。
[/Quote]
十分感谢你的回复,不过httplib.send不是一次只能把一个整的文件send过去么
oppochen 2011-09-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 iambic 的回复:]

引用 5 楼 oppochen 的回复:
我又遇到别的问题了,同样的py脚本,用pythonwin编译,和eclipse编译出不同的结果,有这种可能吗?而且,性能上的差异很大,比如这句 Python ……

再正常不过了。从你的异常来看,你是在debug模式下执行的代码。debug模式比正常执行在性能上相差几十几百几千倍都不为过。
[/Quote]
在python IDLE下也是调试模式么? 这段代码 在IDLE下也是报错的

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧