为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免在python 2.7中出现此错误“无效模式w或文件名”?

如何避免在python 2.7中出现此错误“无效模式w或文件名”?

互换的青春 2021-03-29 13:08:56
with open("movies.txt") as infile:    for line in infile:        list1 = [ ]        for temp in line.split(':'):            list1.append(temp)        if (list1[0] == 'product/productId'):            if(list1[1] != product):                product = list1[1]                f1=open(list1[1],'w')        elif(list1[0] == 'review/text'):            if (list1[1] != product):                f1.write(list1[1] + os.linesep)我不断收到ioerror,一旦我使用“ for filename in line”而不是“ open(filename)as file:”,ioerror就会消失,请帮助我已经尝试过此页面上的所有solutin格式,逐行读取Python中的大型文本文件,而无需将其加载到内存中,但无济于事当我使用此代码时,它工作得很好...for line in file_contents('movies.txt').splitlines():    list1 = [ ]    for temp in line.split(":"):        list1.append(temp)    for temp2 in line.split(":"):        list1.append(temp2)    if (list1[1] != product):        if (list1[0] == 'product/productId'):            product = list1[1]            f1 = open(list1[1],'w')        elif(list1[0] == 'review/text'):            f1.write(list1[1] + os.linesep)但是我必须使用我发布的第一个代码。
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

从文件中读取行时,您将获得尾随的换行符\n。您可以在发布的“回溯”中看到这一点,并且我认为这就是问题所在。

用于.strip()在尝试打开文件之前删除不需要的空格和换行符。您可能还必须提供要处理的文件的完整路径,而不仅仅是文件名。


查看完整回答
反对 回复 2021-04-01
?
慕森王

TA贡献1777条经验 获得超3个赞

可能是因为line1[1]作为文件名无效,例如,它是一个空字符串。


查看完整回答
反对 回复 2021-04-01
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您为什么不尝试捕获此异常并打印出来list1[1]以检查其是否包含正确的文件名?我希望它可能包含非法字符。在将其用作文件名之前,您可能应该从文件的第二个字段中整理这些字符串。


查看完整回答
反对 回复 2021-04-01
  • 3 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信