AttributeError: у объекта '_io.TextIOWrapper' нет атрибута 'split' - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь использовать модуль glob, чтобы сделать l oop, который проходит по Path файлу для текстовых файлов и конвертирует их в csv, и вот код ниже:

import pandas as pd
import glob
import os

"""dataf_gsm_car_txt = 'gsmcarrier_mnm.txt'
dataf_gsm_rel_txt = 'gsmrelation_mnm.txt'

class push_all_to_csv(object):
    def push_gsmcarrier(self):
        dataf_gsm_car_txt_df = pd.read_csv(dataf_gsm_car_txt, sep=';')
        dataf_gsm_car_df_column_index = list(dataf_gsm_car_txt_df.columns)
        dataf_gsm_car_txt_df.reset_index(inplace=True)
        dataf_gsm_car_txt_df.drop(columns=dataf_gsm_car_txt_df.columns[-1], inplace=True)
        dataf_gsm_car_df_column_index = dict(zip(list(dataf_gsm_car_txt_df.columns), dataf_gsm_car_df_column_index))
        dataf_gsm_car_txt_df.rename(columns=dataf_gsm_car_df_column_index, inplace=True)
        dataf_gsm_car_txt_df.to_excel('gsmcarrier_mnm.xlsx', 'Sheet1', index=False)

    def push_gsmrelation(self):
        dataf_gsm_txt_df = pd.read_csv(dataf_gsm_rel_txt, sep=';')
        dataf_gsm_rel_df_column_index = list(dataf_gsm_txt_df.columns)
        dataf_gsm_txt_df.reset_index(inplace=True)
        dataf_gsm_txt_df.drop(columns=dataf_gsm_txt_df.columns[-1], inplace=True)
        dataf_gsm_rel_df_column_index = dict(zip(list(dataf_gsm_txt_df.columns), dataf_gsm_rel_df_column_index))
        dataf_gsm_txt_df.rename(columns=dataf_gsm_rel_df_column_index, inplace=True)
        dataf_gsm_txt_df.to_excel('gsmrelation_mnm.xlsx', 'Sheet1', index=False)

    def push_umtscarrier(self):
        dataf_umts_car_txt = 'umtscarrier_mnm.txt'
        dataf_umts_car_txt_df = pd.read_csv(dataf_umts_car_txt, sep=';')
        dataf_umts_car_df_column_index = list(dataf_umts_car_txt_df.columns)
        dataf_umts_car_txt_df.reset_index(inplace=True)
        dataf_umts_car_txt_df.drop(columns=dataf_umts_car_txt_df.columns[-1], inplace=True)
        dataf_umts_car_df_column_index = dict(zip(list(dataf_umts_car_txt_df.columns), dataf_umts_car_df_column_index))
        dataf_umts_car_txt_df.rename(columns=dataf_umts_car_df_column_index, inplace=True)
        dataf_umts_car_txt_df.to_excel('umtscarrier_mnm.xlsx', 'Sheet1', index=False)

    def push_gsmrelation(self):
        dataf_umts_rel_txt = 'umtsrelation_mnm.txt'
        dataf_umts_txt_df = pd.read_csv(dataf_umts_rel_txt, sep=';')
        dataf_umts_rel_df_column_index = list(dataf_umts_txt_df.columns)
        dataf_umts_txt_df.reset_index(inplace=True)
        dataf_umts_txt_df.drop(columns=dataf_umts_txt_df.columns[-1], inplace=True)
        dataf_umts_rel_df_column_index = dict(zip(list(dataf_umts_txt_df.columns), dataf_umts_rel_df_column_index))
        dataf_umts_txt_df.rename(columns=dataf_umts_rel_df_column_index, inplace=True)
        dataf_umts_txt_df.to_csv('umtsrelation_mnm.csv')

def get_push_all_to_csv():
    return push_all_to_csv()"""


def clean(path):
    df = pd.read_csv(path, sep=';')
    cols = df.columns.tolist()
    df = df.reset_index().drop(columns=df.columns[-1])
    new_cols = dict(zip(list(df.columns), cols))
    df = df.rename(columns=new_cols)
    new_file_path = path.split(".")[:-1].append(".csv")
    df.to_csv(path, index=False)

def main():
    path = r"C:\Users\haroo501\PycharmProjects\ToolUpdated\data_feed"
    pathPat = os.path.join(path, "*.txt")
    all_file_name = glob.glob(pathPat)

    for file_path in all_file_name:
        with open(file_path) as currentFile:
            print (file_path)
            clean(currentFile)


if __name__ == "__main__":
    main()

Я нашел эту ошибку:

Traceback (most recent call last):
  File "C:/Users/haroo501/PycharmProjects/ToolUpdated/txt_to_csv/convert_to_csv.py", line 72, in <module>
    main()
  File "C:/Users/haroo501/PycharmProjects/ToolUpdated/txt_to_csv/convert_to_csv.py", line 68, in main
    clean(currentFile)
  File "C:/Users/haroo501/PycharmProjects/ToolUpdated/txt_to_csv/convert_to_csv.py", line 57, in clean
    new_file_path = path.split(".")[:-1].append(".xlsx")
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'

...