【发布时间】:2015-06-17 17:49:21
【问题描述】:
我需要我的 test.py 在 LINUX shell 中显示以下内容 - 列出目录中的所有文件 - 以字节为单位的文件大小的降序(必须显示字节) - 最后显示总文件和总大小(X 个文件 X 总大小) - 不包括子目录或其他子目录中的文件
这是我的 python 可执行文件
#!/usr/bin/env python
import subprocess
subprocess.call(["ls", "-l", "-S", "-s"])
这会按降序显示文件及其大小,但它包括我不想要的文件夹/子目录
另外将 subprocess.call 替换为 subprocess.call(["find", "-type","f"]) 只向我显示没有不需要的日期和时间的文件,但我不知道如何获取我想要的信息。
我的python代码:
#!/usr/bin/env python
import subprocess, os, operator
directory='e:\\Programs/Cyg/home/Dylan/test'
list=os.listdir(directory)
pairs=[]
for file in list:
if os.path.isfile:
location=os.path.join(directory, file)
size=os.path.getsize(location) pairs.append((file,size))
pairs.sort(key=operator.itemgetter(0))
for pair in pairs:
print (pair)
【问题讨论】:
-
为什么不用python自带的能力:
os.walk,os.stat,os.listdir? -
我尝试了这段代码,但我最终得到了重复的文件列表,而且它没有按顺序排列,这是我拥有的壁橱,我一生都无法弄清楚如何做到这一点。
#!/usr/bin/env python import subprocess, os, operator directory='e:\\Programs/Cyg/home/Dylan/test' list=os.listdir(directory) pairs=[] for file in list: if os.path.isfile: location=os.path.join(directory, file) size=os.path.getsize(location) pairs.append((file,size)) pairs.sort(key=operator.itemgetter(0)) for pair in pairs: print (pair) -
'e:\\Programs'在 Linux 上?我不信。无论如何,在路径中混合斜杠和反斜杠从来都不是一个好主意。尝试坚持系统原生。os.path可以帮到你
标签: python linux shell subprocess