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

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)

但是我必须使用我发布的第一个代码。


互换的青春
浏览 177回答 3
3回答

慕桂英546537

从文件中读取行时,您将获得尾随的换行符\n。您可以在发布的“回溯”中看到这一点,并且我认为这就是问题所在。用于.strip()在尝试打开文件之前删除不需要的空格和换行符。您可能还必须提供要处理的文件的完整路径,而不仅仅是文件名。

慕森王

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

繁星点点滴滴

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

相关分类

Python