Если вы хотите искать рекурсивно ( Python 3.5 или выше ), вы можете сделать следующее:
from glob import iglob
import pandas as pd
path = r'C:\user\your\path\**\*.csv'
all_rec = iglob(path, recursive=True)
dataframes = (pd.read_csv(f) for f in all_rec)
big_dataframe = pd.concat(dataframes, ignore_index=True)
Обратите внимание, что три последние строки могут быть выражены в одном single line:
df = pd.concat((pd.read_csv(f) for f in iglob(path, recursive=True)), ignore_index=True)
Здесь вы можете найти документацию **
здесь . Кроме того, я использовал iglob
вместо glob
, поскольку он возвращает итератор вместо списка.
EDIT: мультиплатформенная рекурсивная функция:
You (Linux, Windows, Mac), поэтому вы можете просто сделать это:
df = read_df_rec('C:\user\your\path', *.csv)
Вот функция:
from glob import iglob
from os.path import join
import pandas as pd
def read_df_rec(path, fn_regex=r'*.csv'):
return pd.concat((pd.read_csv(f) for f in iglob(
join(path, '**', fn_regex), recursive=True)), ignore_index=True)
Нужно использовать =
вместо ==
в строке [ $? == 0 ]
.
Вы должны изменить это на:
if [ $? -eq 0 ]; then
...
-eq
делает числовое сравнение.
Вы также можете воспользоваться тем, что в оболочке возвращаемое значение 0 считается успешным, и напишите свой код следующим образом:
if jar tvf "$i" | grep "$LOOK_FOR"; then
...
Попробуйте:
if [[ $? == 0 ]]; then
echo "==> Found \"$LOOK_FOR\" in $i"
fi
#!/bin/sh
LOOK_FOR="$1"
find $2 -name "*jar"`| while read -r file
echo "Looking in $file ..."
jar tvf "$file" | grep "$LOOK_FOR"
if [ $? -eq 0 ] ; then
echo "==> Found \"$LOOK_FOR\" in $file"
fi
done
]