AttributeError:“_io.TextIOWrapper”对象没有属性“rpartition”

Posted

技术标签:

【中文标题】AttributeError:“_io.TextIOWrapper”对象没有属性“rpartition”【英文标题】:AttributeError: '_io.TextIOWrapper' object has no attribute 'rpartition' 【发布时间】:2021-05-31 00:08:13 【问题描述】:

我收到此错误:

AttributeError: '_io.TextIOWrapper' 对象没有属性 'rpartition'

每次我开始我的脚本。

我不知道为什么会出现这个错误,有人可以帮我解决这个问题吗?

我的代码:

import os
import json
import random
import csv
from pydub import Audiosegment


file_path = open('/path/to/file/.tsv ', encoding='UTF-8')
save_json_path = '/path/where/you/want/the/jsons/saved' 

def main(args):
    data = []
    directory = file_path.rpartition('/')[0]
    percent = int(100)
    
    with open(file_path) as f:
        lenght = sum(1 for ine in f)
    
    
    
    
    with open(file_path, newline='') as csvfile: 
        reader = csv.DictReader(csvfile, delimiter='\t')
        index = 1
        if(args.convert):
            print(str(lenght) + "files found")
        for row in reader:  
            file_name = row['path']
            filename = file_name.rpartition('.')[0] + ".wav"
            text = row['sentence']
            if(args.convert):
                data.append(
                "key": directory + "/clips/" + filename,
                "text": text
                )
                print("converting file " + str(index) + "/" + str(lenght) + " to wav", end="\r")
                src = directory + "/clips/" + file_name
                dst = directory + "/clips/" + filename
                sound = AudioSegment.from_mp3(src)
                sound.export(dst, format="wav")
                index = index + 1
            else:
                data.append(
                "key": directory + "/clips/" + file_name,
                "text": text
                )
                
    random.shuffle(data)

    print("creating JSON's")
    f = open(save_json_path +"/"+ "train.json", "w")
    
    with open(save_json_path +"/"+ 'train.json','w') as f:
        d = len(data)
        i=0
        while(i<int(d-d/percent)):
            r=data[i]
            line = json.dumps(r)
            f.write(line + "\n")
            i = i+1
    
    f = open(save_json_path +"/"+ "test.json", "w")

    with open(save_json_path +"/"+ 'test.json','w') as f:
        d = len(data)
        i=int(d-d/percent)
        while(i<d):
            r=data[i]
            line = json.dumps(r)
            f.write(line + "\n")
            i = i+1
    print("Done!")

if __name__ == "__main__":
    import argparse

    parser = argparse.ArgumentParser(description="""
    Utility script to convert commonvoice into wav and create the training and test json files for speechrecognition. """
    )  
    parser.add_argument('--convert', default=True, action='store_true',
                        help='says that the script should convert mp3 to wav')

    
    args = parser.parse_known_args()
    main(args)

这是错误信息:

目录 = file_path.rpartition('/')[0]

AttributeError: '_io.TextIOWrapper' 对象没有属性 'rpartition'

【问题讨论】:

为什么重复的open(没有和有with)? 【参考方案1】:

第 8 行:

file_path = open('/path/to/file/.tsv ', encoding='UTF-8')

你打开文件,它会给你一个文件句柄。

第 13 行:

    directory = file_path.rpartition('/')[0]

rpartition在文件句柄上被调用,但它是一个字符串方法。

将第 8 行更改为:

file_path = '/path/to/file/.tsv'

会解决这个问题的。

【讨论】:

以上是关于AttributeError:“_io.TextIOWrapper”对象没有属性“rpartition”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'

AttributeError:“会话”对象没有属性“会话”