Неожиданная ошибка оператора [дубликат]

Если вы хотите искать рекурсивно ( 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)

26
задан wearetherock 6 January 2010 в 05:39
поделиться

4 ответа

Нужно использовать = вместо == в строке [ $? == 0 ] .

71
ответ дан 28 November 2019 в 06:16
поделиться

Вы должны изменить это на:

if [ $? -eq 0 ]; then
    ...

-eq делает числовое сравнение.

Вы также можете воспользоваться тем, что в оболочке возвращаемое значение 0 считается успешным, и напишите свой код следующим образом:

if jar tvf "$i" | grep "$LOOK_FOR"; then
    ...
8
ответ дан NoobEditor 15 October 2019 в 07:07
поделиться

Попробуйте:

if [[ $? == 0 ]]; then
    echo "==> Found \"$LOOK_FOR\" in $i"
fi
-1
ответ дан slebetman 15 October 2019 в 07:07
поделиться
[
#!/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
]
2
ответ дан 28 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: