Python可执行文件到Linux列出具有大小的文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python可执行文件到Linux列出具有大小的文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1848字,纯文字阅读大概需要3分钟。
内容图文
![Python可执行文件到Linux列出具有大小的文件](/upload/InfoBanner/zyjiaocheng/946/5ecaa3d5e99945dc81e3698f1fb82afc.jpg)
我需要我的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)
解决方法:
您可以将输出传递给grep来忽略目录.
from subprocess import Popen,PIPE
directory = 'path'
p1 = Popen(["ls",directory, "-Ssp"], stdout=PIPE)
p2 = Popen(["grep", "-v", '/$'], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close()
out, _err = p2.communicate()
files = out.splitlines()
total = files.pop(0)
print(total)
print(len(files))
在您自己的代码中,按错误的键进行排序,您需要将文件大小放在元组中的第一位,以确保实际调用isfile.
import operator
from os import path, listdir
directory = 'path'
lst = listdir(directory)
pairs = []
for f in lst:
if os.path.isfile(path.join(directory, f)):
location = path.join(directory, f)
size = os.path.getsize(location)
pairs.append((size, f))
pairs.sort(key=operator.itemgetter(0),reverse=True)
print(len(pairs))
print(sum(s for s,_ in pairs))
for size, f in pairs:
print(size, f)
同样,要从最高到最低排序,您需要使用reverse = True.如果要忽略副本,则可以使用if而不是f.endswith(“?”)或将-B标志与ls一起使用来忽略备份.要使用ls更改文件的输出大小,您需要使用–block-size 1之类的东西.
内容总结
以上是互联网集市为您收集整理的Python可执行文件到Linux列出具有大小的文件全部内容,希望文章能够帮你解决Python可执行文件到Linux列出具有大小的文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。