我想编写一个python解析器来将dir结果转换为csv或json。
dir /a/s/od/ta
。磁碟區 C 中的磁碟沒有標籤。
磁碟區序號: 123-1234
C:\ 的目錄
2009/07/14 上午 11:20 <DIR> PerfLogs
2009/07/14 下午 01:08 <JUNCTION> Documents and Settings [C:\Users]
2018/03/14 下午 04:09 12,796,198,912 hiberfil.sys
2018/03/14 下午 04:09 17,061,601,280 pagefile.sys
2018/03/14 下午 04:16 <DIR> Recovery
2018/03/14 下午 04:17 <DIR> Users
2018/03/14 下午 04:17 <DIR> $Recycle.Bin
2018/03/14 下午 04:42 <DIR> Intel
2018/03/14 下午 05:46 <DIR> Python27
2018/03/22 下午 01:19 40 87E27E492B63
2018/03/31 上午 11:08 <DIR> py36
2018/05/04 下午 06:12 <DIR> ProgramData
2018/05/04 下午 06:12 <DIR> Program Files (x86)
2018/05/04 下午 06:15 <DIR> Windows
2018/05/07 上午 10:17 <DIR> System Volume Information
2018/05/07 上午 10:19 <DIR> Config.Msi
2018/05/08 上午 10:39 <DIR> Program Files
3 個檔案 29,857,800,232 位元組
我希望它可以如下所示。
============================================================
|**name |path |lastaccess |type** |
|PerfLogs |C:\ |2009/07/14 上午 11:20 |<DIR> |
|hiberfil.sys|C:\ |2018/03/14 下午 04:09 |12,796,198,912|
|pagefile.sys|C:\ |2018/03/14 下午 04:09 |17,061,601,280|
|Recovery |C:\ |2018/03/14 下午 04:16 |<DIR> |
|Users |C:\ |2018/03/14 下午 04:17 |<DIR> |
|$Recycle.Bin|C:\ |2018/03/14 下午 04:17 |<DIR> |
|Intel |C:\ |2018/03/14 下午 04:42 |<DIR> |
|Python27 |C:\ |2018/03/14 下午 05:46 |<DIR> |
|87E27E492B63|C:\ |2018/03/22 下午 01:19 |40 |
|py36 |C:\ |2018/03/31 上午 11:08 |<DIR> |
|ProgramData |C:\ |2018/05/04 下午 06:12 |<DIR> |
|Windows |C:\ |2018/05/04 下午 06:15 |<DIR> |
|Config.Msi |C:\ |2018/05/07 上午 10:19 |<DIR> |
|ProgramFiles|C:\ |2018/05/08 上午 10:39 |<DIR> |
===========================================================
你知道我可以使用的任何python库吗? 或者,如果没有可以使用的库,你会给我一些建议吗? 非常感谢你。
答案 0 :(得分:1)
您绝对可以使用 Pandas Library 来创建 CSV 文件。
import pandas as pd
然后存储您的数据框或列&amp;变量中的行,例如。的 DF 强>
df.to_csv(file_name, index = False, sep=',')
此处,您的值将由逗号(,)分隔。您也可以使用“|”作为分隔符。
答案 1 :(得分:0)
您可以将os.popen
与re
:
import os, re
import csv
rows = [i.strip('\n') for i in os.popen('dir /a/s/od/ta')]
drive = re.findall('[A-Z]:', '\n'.join(rows))[0]+'\\'
directories = [re.split('\s{2,}|(?<=\d)\s|\s(?=\d)', i) for i in rows if re.findall('^\d+/\d+/\d+|\<[A-Z]+\>', i)]
with open('dir_results.csv', 'w') as f:
write = csv.writer(f)
write.writerows([['**name', 'path', 'lastaccess', 'type**']]+[[c]+[drive]+[' '.join(a)]+[b] for *a, b, c in directories])
输出:
**name,path,lastaccess,type**
PerfLogs,C:\,2009/07/14 上午 11:20,<DIR>
Documents and Settings [C:\Users],C:\,2009/07/14 下午 01:08,<JUNCTION>
hiberfil.sys,C:\,2018/03/14 下午 04:09,"12,796,198,912"
pagefile.sys,C:\,2018/03/14 下午 04:09,"17,061,601,280"
Recovery,C:\,2018/03/14 下午 04:16,<DIR>
Users,C:\,2018/03/14 下午 04:17,<DIR>
$Recycle.Bin,C:\,2018/03/14 下午 04:17,<DIR>
Intel,C:\,2018/03/14 下午 04:42,<DIR>
Python27,C:\,2018/03/14 下午 05:46,<DIR>
87E27E492B63,C:\,2018/03/22 下午 01:19,40
py36,C:\,2018/03/31 上午 11:08,<DIR>
ProgramData,C:\,2018/05/04 下午 06:12,<DIR>
Program Files (x86),C:\,2018/05/04 下午 06:12,<DIR>
Windows,C:\,2018/05/04 下午 06:15,<DIR>
System Volume Information,C:\,2018/05/07 上午 10:17,<DIR>
Config.Msi,C:\,2018/05/07 上午 10:19,<DIR>
Program Files,C:\,2018/05/08 上午 10:39,<DIR