鱼C论坛

 找回密码
 立即注册
查看: 3650|回复: 12

[已解决]pickle使用问题求助

[复制链接]
发表于 2017-5-4 22:56:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# -*-coding:utf-8 -*-
import pickle
f=open('S313桥梁主要工程数量表(上部).pdf','rb')
y=pickle.load('f')
nf=open('new_file.pdf','wb')
pickle.dump(f,'nf')
f.close()
nf.close()

想把一个pdf文件的内容读取出来然后写入到另一个pdf里,但是一直提示   y=pickle.load('f') 需要read或readline属性 , 但我明明在打开的时候选择了'rb'模式了。
Traceback (most recent call last):
  File "C:\Users\Administrator.USER-20170104WJ\Desktop\读取数据写入另一个文件.py", line 4, in <module>
    y=pickle.load('f')
TypeError: file must have 'read' and 'readline' attributes

各位鱼油大神帮忙看看哪里错了,万分感谢!
最佳答案
2017-5-5 17:25:21
本帖最后由 新房客 于 2017-5-5 17:27 编辑
自负的咸鱼 发表于 2017-5-5 11:02
y = pickle.load(f)  去掉引号的话又变成这样了  
Traceback (most recent call last):
  File "C:%use ...


存储之前没有序列化,导致有初始字符。pickle并不好用,很受限制,你可以看一下廖雪峰教程有关序列化那一章节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-5 09:40:05 | 显示全部楼层
语法错误,去掉引号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 11:02:58 | 显示全部楼层
新房客 发表于 2017-5-5 09:40
语法错误,去掉引号

y = pickle.load(f)  去掉引号的话又变成这样了  
Traceback (most recent call last):
  File "C:\Users\Administrator.USER-20170104WJ\Desktop\读取数据写入另一个文件.py", line 4, in <module>
    y=pickle.load(f)
_pickle.UnpicklingError: invalid load key, '%'.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 11:51:32 | 显示全部楼层
直接复制不就完了吗
cmd命令:
copy a.pdf b.pdf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 11:52:13 | 显示全部楼层
视乎是我的python出了问题? 3.5.2版本的。  我把代码改了一点点又开始提示我 dump的时候文件需要write属性。。。     
# -*-coding:utf-8 -*-
import pickle
f= open('S313桥梁主要工程数量表.pdf','rb')
nf=open('new_file.pdf','wb')
for y in f:
    pickle.dump(y,'nf')
f.close()
nf.close()

又开始报错了   
Traceback (most recent call last):
  File "C:\Users\Administrator.USER-20170104WJ\Desktop\读取数据写入另一个文件.py", line 6, in <module>
    pickle.dump(y,'nf')
TypeError: file must have a 'write' attribute
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 13:03:44 | 显示全部楼层
SixPy 发表于 2017-5-5 11:51
直接复制不就完了吗
cmd命令:
copy a.pdf b.pdf

对于高手来说确实是个简单的问题      我是想自己弄一个合并PDF文件的程序、、、、    我把整个代码都改掉了   
# -*-coding:utf-8 -*-
import pickle
nf=open('new_file.pdf','ab')
def open_file(a):
    f= open(a,'rb')
    for y in f:
        nf.write(y)
    f.close()  
file_name = ['S313桥梁主要工程数量表.pdf','S313桥梁主要工程数量表(下部).pdf','S313桥梁主要工程数量表(支座).pdf','S313桥梁主要工程数量表(桩基).pdf']
for x in file_name[:]:
    print(x)
    open_file(x)

nf.close()
但现在又有新的问题了,就是循环写入会把前面的内容覆盖掉,明明已经用了 'ab'模式了 搞不懂什么情况,能帮忙看看么= =
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 13:14:07 | 显示全部楼层
pdf不能这样合并
要用pdf编辑器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 13:18:55 | 显示全部楼层
SixPy 发表于 2017-5-5 13:14
pdf不能这样合并
要用pdf编辑器

= =好像是的  我用txt试了一下是可以追加内容的。  您能帮我看看我第一个代码有什么问题吗,就是开头的那个问题。  那用python能编写一个合并PDF的程序吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 14:38:49 | 显示全部楼层
自负的咸鱼 发表于 2017-5-5 13:18
= =好像是的  我用txt试了一下是可以追加内容的。  您能帮我看看我第一个代码有什么问题吗,就是开头的那 ...

百度一下 python pdf模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 14:42:13 | 显示全部楼层
http://www.cnblogs.com/jamespei/p/5339769.html
Python使用PDFMiner解析PDF
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 17:05:29 | 显示全部楼层
自负的咸鱼 发表于 2017-5-5 11:52
视乎是我的python出了问题? 3.5.2版本的。  我把代码改了一点点又开始提示我 dump的时候文件需要write属性 ...

nf的引号也去掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 17:25:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 新房客 于 2017-5-5 17:27 编辑
自负的咸鱼 发表于 2017-5-5 11:02
y = pickle.load(f)  去掉引号的话又变成这样了  
Traceback (most recent call last):
  File "C:%use ...


存储之前没有序列化,导致有初始字符。pickle并不好用,很受限制,你可以看一下廖雪峰教程有关序列化那一章节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 23:28:09 | 显示全部楼层

好的 谢谢我试试, 廖雪峰的网站我也收藏了 我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-7 15:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表