[過去ログ] くだすれPython(超初心者用) その48【まず1嫁】 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
450: デフォルトの名無しさん [] 2020/06/25(木) 10:52:46.36 ID:2vdRi5gu(1/4) AAS
あるフォルダ(親)の中のサブフォルダ(子)のさらにサブフォルダ(孫)のうち、
一定時間使用していない孫フォルダだけを削除するツールを作ろうとしています。
以下のように [子\\孫, 更新からの経過時間] という2次元のリスト(filelists)を作るところまでできました。
(テスト用にフォルダを作って動かしているので孫フォルダが7つしかありませんが、
実際に使いたいフォルダには1000個くらいの孫フォルダがあります。)
このリストから更新からの経過時間が2400以上のものだけをピックアップしてリスト化(delFileList)するにはどうすればよいでしょうか?
ググってリスト内包表記というキーワードまではたどり着いたのですが多次元の例を見つけられず、躓いています。
windows10, Python 3.8.3 IDLE を使用して書いています。

書いてみたもの
delFileList = [i for i in filelists if filelists[][1] > 10]

エラー
Traceback (most recent call last):
File "C:\Users\xxx\Desktop\yyy\getOldFiles3.py", line 24, in <module>
delFileList = [i for i in filelists if filelists[i][1] > 10]
File "C:\Users\xxx\Desktop\yyy\getOldFiles3.py", line 24, in <listcomp>
delFileList = [i for i in filelists if filelists[i][1] > 10]
TypeError: list indices must be integers or slices, not list

いま出来ているリスト名: filelists
[['car1\\HYD', 2438],
['car1\\SEAT', 2433],
['car2\\ENG', 2425],
['car2\\WHEEL', 2415],
['car2\\STAB', 2400],
['car3\\LIGHT', 2382],
['car3\\ELEC', 2373],]
452
(2): デフォルトの名無しさん [] 2020/06/25(木) 11:18:15.99 ID:2vdRi5gu(2/4) AAS
他にどういう方法があるかもよくわかってないんだよ
456
(1): デフォルトの名無しさん [] 2020/06/25(木) 11:33:37.19 ID:2vdRi5gu(3/4) AAS
理解できませんが、レスくださったとおりに書き直したら上手く行きました。

以下のようにも書いてみたのですが、型のエラーが出てしまい上手く行きませんでした。
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

#for row in filelists :
# if int([row[1] for row in filelists]) > 2400 :
# delFileList.append([row[0] for row in filelists])

この先のファイル削除までたどり着けるか非常に不安ですが勉強します。
ありがとうございます。
458: デフォルトの名無しさん [] 2020/06/25(木) 11:42:00.54 ID:2vdRi5gu(4/4) AAS
>>457

455を読んだら少し理解が進みました。まだ完全には理解できてませんが笑

ホントは車屋さんじゃなくて飛行機屋さんです。
飛行機の固有名詞がフォルダ名になってて特定可能なんで偽装してます。

ご指導ありがとうございます。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.046s