#arrays #python-3.x #string #numpy #file
Вопрос:
Я хотел бы объединить несколько текстовых файлов только в один текстовый файл и прочитать все его содержимое. Однако коды считывают только один текстовый файл и сохраняют данные, взятые только из одного текстового файла. Коды;
path = "/home/Documents/Python/"
read_files = glob.glob(path "*.txt")
with open("contents.txt", "wb") as outfile:
for f in read_files:
with open(f, "rb") as infile:
outfile.write(infile.read())
Я также попробовал почти такой же другой код. Однако он не смог преобразовать строку в плавающую, потому что первые строки в текстовых файлах содержат символ#.
x = np.array([float(raw) for raw in f.readlines()])
Я знаю, что в stackoverflow есть и некоторые другие вопросы, касающиеся того, как это сделать. Несмотря на то, что я тоже пробовал их, я не смог добиться этого должным образом.
Я буду признателен за любую помощь или предложение.
Комментарии:
1. Поскольку ваш вопрос также помечен numpy, вы можете использовать loadtxt numpy, который будет считывать данные в виде массива Numpy.
loadtxt
Функция поддерживает чтение / пропуск столбцов различных типов, а также заголовков. Затем вы можете объединить все свои массивы и сохранить их сnumpy.savetxt
помощью . В качестве альтернативы вы можете использовать библиотеку Pandas, которая имеет более приятный интерфейс для некоторых функций и представлений данных Numpy.
Ответ №1:
на случай, если кто-то захочет использовать другой метод, эти коды сработали для меня. я пошел по другому пути, чтобы найти решение своего собственного вопроса.
all_files = glob.glob(path "/*.txt")
all = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
all.append(df)
frame = pd.concat(all, axis=0, ignore_index=True)
Ответ №2:
Что-то вроде этого, возможно.
import os
import glob
import pandas as pd
os.chdir("C:\")
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "C:\combined_csv.csv", index=False, encoding='utf-8-sig')