Запустите скрипт Python для каждого текстового файла в папке с помощью Spyder

#python #file #syntax #spyder #delete-row

#питон #файл #синтаксис #spyder #удалить строку #python

Вопрос:

Я пытаюсь запустить скрипт для более чем 900 файлов, используя платформу Spyder, целью которой является удаление первых 3 строк данных и определенных столбцов. Я пытался изучить другие подобные вопросы, но не смог достичь желаемых результатов.

Мой код для одного текстового файла выглядит следующим образом:

 import pandas as pd 
mydataset = pd.read_csv('vectors_0001.txt')
df = pd.DataFrame(mydataset)
df.drop(df.iloc[:,:2], inplace = True, axis = 1)
df.drop([0,1,3], axis = 0, inplace = True)
df = df.dropna(axis = 0, subset=['Column3','Column4'])
  

Затем я хочу изменить приведенный выше код, чтобы его можно было применять к последовательным текстовым файлам, все текстовые имена файлов: vectors_0001, vectors_0002, …, vectors_0900. Я пытался сделать что-то подобное, но я продолжаю получать ошибки. Возьмем в качестве примера приведенный ниже:
(Обратите внимание: ‘u [m / s]’, ‘v [m / s]’ — это столбцы, которые я хочу сохранить для дальнейшего анализа данных, а от других столбцов я хочу избавиться.)

 import glob
import os.path
import sys
import pandas as pd

dir_of_interest = sys.argv[1] if len(sys.argv) > 1 else '.'
files = glob.glob(os.path.join(dir_of_interest, "*.txt"))
for file in files: 
    with open('file.txt', 'w') as f: 
        f.writelines(3:)
df = pd.read_csv("*.txt")
df_new = df[['u [m/s]', 'v [m/s]']  
df_new.to_csv('*.txt', header=True, index=None)
    with open('file.txt','r ') as f: 
        print(f.read())
  

Однако я попытался запустить его и получил сообщение об ошибке:

  f.writelines(3:)
                  ^
SyntaxError: invalid syntax
  

Я действительно хочу разобраться в этом и перейти к своему анализу данных. Пожалуйста, заранее благодарю вас.

Ответ №1:

Я не совсем уверен в том, чего вы пытаетесь достичь здесь, но вы неправильно используете функции writelines. Он принимает список в качестве аргумента

https://www.w3schools.com/python/ref_file_writelines.asp

Вы даете ему «3:», что недопустимо. Может быть, вы хотите предоставить ему часть существующего списка?

Комментарии:

1. Я попытался изменить: «f.writelines (3:)» на «f.writelines (f.readlines () [3:])», это как-то сработало, но теперь я получаю другую ошибку: df_new.to_csv (‘*.txt’, заголовок = True, индекс = None) ^ SyntaxError: недопустимый синтаксис