Я столкнулся со странной проблемой при чтении файла csv из корзины облачного хранилища Google и записи его в файл в другой папке в той же корзине.
У меня есть файл csv с именем test.csv со 1000001 строкой. Я пытаюсь заменить "в каждой строке пустым пространством и записать в файл с именем cleansed_test.csv.
Я протестировал свой код локально и работает, как ожидалось.
ниже приведен код, который я использую в своем локальном
import pandas as pd
import csv
import re
new_lines=[]
new_lines_error_less_cols=[]
new_lines_error_more_cols=[]
with open('c:\\Users\test_file.csv','r') as f:
lines = f.readlines()
print(len(lines))
for line in lines:
new_line = re.sub('["]','',line)
new_line= new_line.strip()
new_lines.append(new_line)
# elif line.count('|') < 295:
# new_line_error_less = re.sub('["]','inches',line)
# new_line_error_less= new_line_error_less.strip()
# new_lines_error_less_cols.append(new_line_error_less)
# else:
# new_line_error_more = re.sub('["]','inches',line)
# new_line_error_more= new_line_error_more.strip()
# new_lines_error_more_cols.append(new_line_error_more)
new_data = pd.DataFrame(new_lines)
print(new_data.info())
#new_data.to_csv('c:\\cleansed_file.csv',header=None,index=False,encoding='utf-8')
Но когда я пытаюсь сделать тот же файл в ведре gcs, читается только 67514 строк, код, который я использую в композиторе
def replace_quotes(project,bucket,**context):
import pandas as pd
import numpy as np
import csv
import os
import re
import gcsfs
import io
fs = gcsfs.GCSFileSystem(project='project_name')
updated_file_list = fs.ls('bucketname/FULL')
updated_file_list = [ x for x in updated_file_list if "filename" in x ]
new_lines=[]
new_lines_error_less_cols=[]
new_lines_error_more_cols=[]
for f in updated_file_list:
file_name = os.path.splitext(f)[0]
parse_names = file_name.split('/')
filename = parse_names[2]
bucketname = parse_names[0]
with fs.open("gs://"+f,'r') as pf:
lines = pf.readlines()
print("length of lines----->",len(lines))#even here showing 67514
for line in lines:
new_line = re.sub('["]','',line)
new_line= new_line.strip()
new_lines.append(new_line)
new_data = pd.DataFrame(new_lines)
#new_data.to_csv("gs://"+bucketname+"/ERROR_FILES/cleansed_"+filename+".csv",escapechar='',header = None,index=False,encoding='utf-8',quoting=csv.QUOTE_NONE)
Также в корзине я вижу, что размеры файлов test.csv и cleansed_test.csv одинаковы.
Единственное, о чем я могу думать, это то, что файлы сжимаются в ведрах gcs, если я открываю файлы другим способом. Потому что, когда я загружаю файлы на локальный компьютер, они намного больше, чем то, что я вижу в корзине.
Пожалуйста, порекомендуйте.
Спасибо.