Open csv file with Pandas and delete if has only 1 row
我有一个任务要创建一个脚本到ssh,每周列出10个Cisco路由器,检查配置更改并发送通知。所以我已经准备好了一个脚本,它记录并运行命令并将其发送到csv。我已经修改了,所以如果没有更改,我在csv中的所有内容都将是例如:RTR0003-仅限路由器名称。如果将有conf更改,则Excel将包含在内,例如:
我的问题是如何运行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) |