2017-07-30 5 views
1

TLDR:私はオブジェクトに次の行を解析したいPythonのテキストファイルの固定フィールド行をstruct.unpack()で解析しますか?

:ここでは、マニュアルや様々な記事を読んで

-rw-rw---- 1 root sdcard_rw 169622962 2017-07-11 17:50 VID_20170711_175051.mp4 

は、そのstruct.unpack()が移動するための方法であると思われますディレクトリリストは本質的に固定フィールドテーブルであるためです。

しかし、私はこれを行う方法の例を見つけることはできませんし、ドキュメントを読んで私の頭脳を包んでいません。

これは正しい方法ですか?もしそうなら、誰かがフォーマットを正しく構造化してstruct.unpackがこれを解析できるようにする方法を説明できますか?

背景:

ADBを使用して携帯電話を、ファイルをオフにコピーするために、私は、ファイルのディレクトリ一覧をダンプするadbのシェルのlsは/ mnt/SDカード/ DCIM /カメラを使用しています。私はディレクトリリストを解析して、コピーする必要がある各ファイルの名前とファイルサイズを知っているので、コピー後のファイルサイズを比較してファイルが実際にコピーされる前に確実にコピーされるようにします電話から削除されました。

下記のサンプルデータがあります。

total 28G 
drwxrwx--x 593 root sdcard_rw 72K 2017-07-30 12:26 . 
drwxrwx--x 5 root sdcard_rw 4.0K 2017-07-30 12:24 .. 
-rw-rw---- 1 root sdcard_rw 693K 2017-05-20 17:24 Burst_Cover_Collage_20170520172413.jpg 
-rw-rw---- 1 root sdcard_rw 431K 2017-05-20 17:27 Burst_Cover_Collage_20170520172732.jpg 
drwxrwx--x 2 root sdcard_rw 4.0K 2017-01-22 15:08 Burst_Cover_GIF_Action_20170122150851 
-rw-rw---- 1 root sdcard_rw 1.5M 2017-01-22 15:09 Burst_Cover_GIF_Action_20170122150851.gif 
drwxrwx--x 2 root sdcard_rw 4.0K 2017-01-22 15:09 Burst_Cover_GIF_Action_20170122150904 
-rw-rw---- 1 root sdcard_rw 2.3M 2017-01-22 15:09 Burst_Cover_GIF_Action_20170122150904.gif 
drwxrwx--x 2 root sdcard_rw 4.0K 2017-01-22 15:13 Burst_Cover_GIF_Action_20170122151304 
-rw-rw---- 1 root sdcard_rw 1.2M 2017-01-22 15:13 Burst_Cover_GIF_Action_20170122151304.gif 
drwxrwx--x 2 root sdcard_rw 4.0K 2017-01-22 15:14 Burst_Cover_GIF_Action_20170122151424 
-rw-rw---- 1 root sdcard_rw 5.7M 2017-01-22 15:14 Burst_Cover_GIF_Action_20170122151424.gif 
drwxrwx--x 2 root sdcard_rw 4.0K 2017-01-23 16:44 Burst_Cover_GIF_Action_2017
-rw-rw---- 1 root sdcard_rw 1.2M 2017-01-23 16:45 Burst_Cover_GIF_Action_2017.gif 
-rw-rw---- 1 root sdcard_rw 1.1M 2017-03-26 18:18 Burst_Cover_GIF_Action_20170326181830.gif 
-rw-rw---- 1 root sdcard_rw 3.6M 2017-04-24 20:14 Burst_Cover_GIF_Action_20170424201337.gif 
-rw-rw---- 1 root sdcard_rw 5.9M 2017-04-30 19:03 Burst_Cover_GIF_Action_20170430190336.gif 
-rw-rw---- 1 root sdcard_rw 914K 2017-06-03 17:42 Burst_Cover_GIF_Action_20170603174226.gif 
-rw-rw---- 1 root sdcard_rw 2.9M 2017-06-07 09:46 Burst_Cover_GIF_Action_20170607094618.gif 
-rw-rw---- 1 root sdcard_rw 0.9M 2017-07-04 14:35 Burst_Cover_GIF_Action_20170704143514.gif 
-rw-rw---- 1 root sdcard_rw 815K 2017-07-04 15:11 Burst_Cover_GIF_Action_20170704151104.gif 
-rw-rw---- 1 root sdcard_rw 2.4M 2016-03-29 17:21 IMG_20160329_172126.jpg 
-rw-rw---- 1 root sdcard_rw 2.4M 2016-03-29 17:21 IMG_20160329_172130.jpg 
-rw-rw---- 1 root sdcard_rw 2.5M 2016-03-29 17:21 IMG_20160329_172131.jpg 
-rw-rw---- 1 root sdcard_rw 2.4M 2016-03-29 17:21 IMG_20160329_172133.jpg 
-rw-rw---- 1 root sdcard_rw 2.6M 2016-03-29 17:21 IMG_20160329_172133_1.jpg 
-rw-rw---- 1 root sdcard_rw 2.8M 2016-03-29 19:40 IMG_20160329_194042.jpg 
-rw-rw---- 1 root sdcard_rw 2.2M 2016-03-29 19:40 IMG_20160329_194044.jpg 
-rw-rw---- 1 root sdcard_rw 2.3M 2016-03-29 19:40 IMG_20160329_194048.jpg 
-rw-rw---- 1 root sdcard_rw 2.4M 2016-03-29 19:40 IMG_20160329_194052.jpg 
-rw-rw---- 1 root sdcard_rw 2.0M 2016-03-29 19:40 IMG_20160329_194057.jpg 
-rw-rw---- 1 root sdcard_rw 2.1M 2016-03-29 19:41 IMG_20160329_194100.jpg 

答えて

0

再試行しましたか?

re.findall(r"([\d.]{1,3}[A-Z])\b(?:\s\S+){2}\s(?!\.{1,2}$)([\w\.]+)$", textfile, re.M) 
+0

ありがとうございます。私は正規表現を考えましたが、私は構造体を学ぶための学習練習としてこれを使用したいと思います。しかし、フィールドのサイズは各フィールドの値によって変わる可能性があるので、私は正規表現で終わることがあります(構造体の制約かもしれません)。 – DrDamnit

+0

@DrDamnit構造体はバイナリデータ用です。これはバイナリデータではありません。 – Bharel

関連する問題