关于python:使用Pandas打开csv文件,如果只有1行则删除

Open csv file with Pandas and delete if has only 1 row

我有一个任务要创建一个脚本到ssh,每周列出10个Cisco路由器,检查配置更改并发送通知。所以我已经准备好了一个脚本,它记录并运行命令并将其发送到csv。我已经修改了,所以如果没有更改,我在csv中的所有内容都将是例如:RTR0003-仅限路由器名称。如果将有conf更改,则Excel将包含在内,例如:

enter image description here

我的问题是如何运行pandas来打开每个文件,如果它只看到一行/一行来删除excel文件,如果有更多行可以跳过它。

我就是这样写文件的:

1
2
3
4
5
6
7
8
files = glob.glob('*.csv')
for file in files:
    df=pd.read_csv(file)
    df=df.dropna()
    df.to_csv(file,index=False)
    df1=pd.read_csv(file,skiprows = 2)
    #df1=df1.drop(df1.tail(1))
    df1.to_csv(file,index=False)


以下是使用熊猫的解决方案:

1
2
3
4
5
6
7
8
9
import pandas as pd
import glob
import os

csv_files = glob.glob('*.csv')
for file in csv_files:
    df_file = pd.read_csv(file, low_memory = False)
    if len(df_file) == 1:
        os.remove(file)

如果使用的是Excel文件,请更改

1
glob.glob('*.csv')

1
glob.glob('*.xlsx')

1
pd.read_csv(file, low_memory = False)

1
pd.read_excel(file)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os    
import glob
import csv

files = glob.glob('*.csv')

for file in files:
    with open(file,"r") as f:
        reader = csv.reader(f,delimiter =",")
        data = list(reader)
        row_count = len(data)

    if row_count == 1:
        os.remove(file)