首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TypeError:强制转换为Unicode:需要字符串或缓冲区

TypeError:强制转换为Unicode:需要字符串或缓冲区
EN

Stack Overflow用户
提问于 2011-07-13 21:55:32
回答 4查看 161.2K关注 0票数 62

此代码返回以下错误消息:

  • with open (infile,mode='r',buffering=-1) as in_f,open (outfile,mode='w',buffering=-1) as out_f: TypeError:强制转换为Unicode:需要字符串或缓冲区,file found打开每个文件以读取/修改infile=open('110331_HS1A_1_rtTA.result','r') outfile=open('2.txt','w') with open (infile,mode='r',buffering=-1) as in_f,open (outfile,mode=‘r’,buffering=-1)as in_f,open(outfile,mode='w',缓冲=-1) as out_f: f=(如果i.rstrip(),in_f中的i为i),对于f:_中的行,k= line.split('\t',1) x=bufferingk)如果不是x:继续out_f.write(‘'.join(x) + '\n')

请谁来帮帮我。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-13 22:03:18

您正在尝试打开每个文件两次!首先你要做的是:

代码语言:javascript
复制
infile=open('110331_HS1A_1_rtTA.result','r')

然后再次将infile (一个文件对象)传递给open函数:

代码语言:javascript
复制
with open (infile, mode='r', buffering=-1)

当然,open期望它的第一个参数是文件名,而不是打开的文件!

只需打开该文件一次,您就会感觉很好。

票数 69
EN

Stack Overflow用户

发布于 2015-10-21 13:34:32

对于不太具体的情况(不仅仅是问题中的代码-因为这是Google对此通用错误消息的第一个结果之一。在不带任何参数的情况下运行某些os命令时,也会发生此错误。

例如:

代码语言:javascript
复制
os.path.exists(arg)  
os.stat(arg)

当arg为None时,将引发此异常。

票数 10
EN

Stack Overflow用户

发布于 2011-07-13 22:03:47

您正在尝试将文件对象作为文件名进行传递。尝试使用

代码语言:javascript
复制
infile = '110331_HS1A_1_rtTA.result'
outfile = '2.txt'

在代码的顶部。

( open()的双重使用不仅会导致尝试再次打开文件时出现问题,还意味着infileoutfile在执行过程中永远不会关闭,尽管它们可能会在程序结束后关闭。)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6680066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档