主要为一些简单的源代码的解析以及一些方法的理解。

  • 说明:这些文件都不是我写的,详情可参考Github上的内容

  • 批量修改文件类型

    def batch_rename(work_dir, old_ext, new_ext):
for filename in os.listdir(work_dir):
file_ext = os.path.splitext(filename)[1]
if file_ext == old_ext:
newfile = filename.replace(old_ext,new_ext)
os.rename(os.path.join(work_dir,file_ext ),os.path.join(work_dir,new_ext))
  1. os.listdir():列出当前目录下的所有文件,为文件的名称,而不是包含路径的名称,同样不包含子目录内的文件;
  2. os.path.splitext():分割文件,分为文件名和文件类型。文件类型为最后一个.和后缀名,文件名称为最后一个.前的所有内容。
  3. replace():字符串替换
  4. os.path.join():用组合的方式将文件路径和文件名称组合为绝对路径。不同的系统添加的内容不一样。和join一样,但功能特殊化。
  5. os.rename():修改文件名。
  • 新建文件夹
    def New_Folder(work_dir,Folder_name):
if not os.path.exists(os.path.join(work_dir,Folder_name)):
os.makedirs(os.path.join(work_dir,Folder_name))
    def New_Folder(Folder_name):
if not os.path.exists(Folder_name)):
os.makedirs(Folder_name)
  1. os.path.exists():判断文件夹是否存在
  2. os.makedirs():新建文件夹
  • 获取文件信息
import os
import stat
import time def get_fileInfo(filename):
file_stats = os.stat(filename)
file_info = {
"fname":filename,
"fmode":file_stats[stat.ST_MODE],
"fsize":file_stats[stat.ST_SIZE],
"f_lm":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_MTIME])),
"f_la":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_ATIME])),
"f_ct":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_CTIME]))
}
return file_info; if __name__ == "__main__":
filename = input("Please input you file:")
fileinfo = get_fileInfo(filename)
print(fileinfo)
if stat.S_ISDIR(fileinfo["fmode"]):
print("Folder")
else:
print("filename :%(fname)s" % fileinfo)
  1. os.stat():获取文件的系统状态信息,返回一个系统状态信息的元组。

  2. stat模块

  3. time.localtime():格式化时间,输入为sec(秒)

  4. 针对字典的格式化输出,有两种方式:

    a. print("%(fname)s" % file_info)

    b. print("%s" % file_info["fname"])

  5. time.strftime():将当前时间格式化为字符串。

  6. stat.S_ISDIR():判断是否为目录,同样还有其他的文件类型。

  • 计算文件夹大小
def folder_size(folder_name):
fold_size = 0
for (path,dirs,files) in os.walk(folder_name):
for file in files:
filename = os.path.join(path,file)
fold_size += os.path.getsize(filename)
return fold_size
  1. os.walk():遍历文件夹,其中遍历为广度优先遍历。即,先遍历当前的文件夹,一步一步深入遍历,同时,根据参数不同遍历的方式也不同。

    a. path为当前的路径。

    b. dirs为当前路径是否包含子目录,没有为[]

    c. files为当前路径的文件列表。

  2. os.path.getsize():获取文件大小。

  • 将某一类型文件压缩
import os
from time import strftime def zip_files(filedir,fileend,zip_prog):
for files in os.listdir(filedir):
if files.endswith(fileend):
files1 = files + "." + strftime("%y-%m-%d") + ".zip"
os.chdir(filedir)
os.popen(zip_prog + " " + files1 + " " + files) #zip_prog = "zip.exe"
  1. zip.exe:压缩程序
  2. os.popen():调用exe,其中的参数和cmd参数一样,需要用空格区分,并且程序执行的目录页需要切换正确,不然会导致程序假执行的状态。
  3. os.chdir():切换工作目录
  4. files.endswith():判断后缀方法。
  5. from time import strftime:导入某个某块的某一部分,避免全部导入。
  6. os.system()和os.popen()虽然效果一样,但两者存在区别。明显的一点是,os.system和os.popen的返回结果已经执行效果并不相同。
  • 遍历检查DNS服务
import subprocess

file_Test = input("File In:")
file_Out = input("File Out:") fileout = open(file_Out ,"w"); for server in open(file_Test ):
subprocess.Popen(("nslookup" + " " + server ),stdout = fileout )
fileout.close()
  1. 详情参考subprocess.Popen()中的参数设定。
  2. nslookup命令参数,详情可nslookup /?(windows)
  3. stdout标准输出,将执行结果写入到file_out文件中。
  4. 写文件最后记得关闭文件。

Python简单源码解析的更多相关文章

  1. 『Python』源码解析_从ctype模块理解对象

    1.对象的引用计数 从c代码分析可知,python所有对象的内存有着同样的起始结构:引用计数+类型信息,实际上这些信息在python本体重也是可以透过包来一窥一二的, from ctypes impo ...

  2. 神经网络中 BP 算法的原理与 Python 实现源码解析

    最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正. 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w),如下图所示. 梯度下降示意图 现在,我们 ...

  3. 『Python』源码解析_源码文件介绍

    本篇代码针对2.X版本,与3.X版本细节不尽相同,由于两者架构差别不大加之本人能力有限,所以就使用2.X体验python的底层原理了. 一.主要文件夹内容 Include :该目录下包含了Python ...

  4. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  5. 设计模式-简单工厂Coding+jdk源码解析

    感谢慕课geely老师的设计模式课程,本套设计模式的所有内容均以课程为参考. 前面的软件设计七大原则,目前只有理论这块,因为最近参与项目重构,暂时没有时间把Coding的代码按照设计思路一点点写出来. ...

  6. 简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析

    简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析 虽然经常用 OAuth 2.0,但是原理却不曾了解,印象里觉得很简单,请求跳来跳去,今天看完相关介绍,就来捋一捋 ...

  7. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)

    量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...

  8. Python2 基本数据结构源码解析

    Python2 基本数据结构源码解析 Contents 0x00. Preface 0x01. PyObject 0x01. PyIntObject 0x02. PyFloatObject 0x04. ...

  9. Theano:LSTM源码解析

    最难读的Theano代码 这份LSTM代码的作者,感觉和前面Tutorial代码作者不是同一个人.对于Theano.Python的手法使用得非常娴熟. 尤其是在两重并行设计上: ①LSTM各个门之间并 ...

随机推荐

  1. iOS 2D绘图 (Quartz2D)之阴影和渐变(shadow,Gradient)

    原博地址:http://blog.csdn.net/hello_hwc/article/details/49507881 Shadow Shadow(阴影) 的目的是为了使UI更有立体感,如图 sha ...

  2. JSP九大内置组件

    request:用户端请求,此请求会包含来自get/post请求的参数 response:网页传回用户端的回应 pagecontext:网页上下文,也就是网页的属性 session:与请求有关的会话期 ...

  3. ASP.net 实现禁止用户重复登录

    本文先为大家介绍如何利用缓存Cache方便地实现此功能. Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局对象,作用的范围是整个应用程序,所有用户:而Session是 ...

  4. java多线程系类:JUC线程池:03之线程池原理(二)(转)

    概要 在前面一章"Java多线程系列--"JUC线程池"02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包 ...

  5. mysql重置密码

    1.首先停止正在运行的MySQL进程 复制代码代码如下: >net stop mysql  如未加载为服务,可直接在进程管理器或者服务中进行关闭. 2.以安全模式启动MySQL 进入mysql目 ...

  6. ubuntu的使用

    1.使用ssh windows下通过winscp,putty(ssh) 等连接ubuntu 需安装ssh服务 ubuntu桌面版本 默认并没有安装ssh服务,如果通过ssh链接ubuntu,需要自己手 ...

  7. 2016-1-1最新版本的linphone-android在mac上编译通过,同时建立了IDEA工程

    虽然参考了这个文章<MAC OS编译Android版Linphone SDK和APP>,https://www.lidaren.com/archives/1592 ,但是在实际的编译过程中 ...

  8. python 列表 总结

    在python里创建列表和字典非常简单,这里总结一下它们的常用方法 1.创建列表 myArry = ["one", "two", "three&quo ...

  9. JS组件系列——开源免费图表组件:Chart.js

    前言:最近被开源免费得有点上火了,各种组件首先想到的就是是开源否.是否免费.是否和bootstrap风格一致.想着以后做报表肯定要用到图表组件的,于是在Bootstrap中文网上面找到了Chart.j ...

  10. 79 umount-卸除目前挂在Linux目录中的文件系统

    Linux umount命令用于卸除文件系统. umount可卸除目前挂在Linux目录中的文件系统. 语法 umount [-ahnrvV][-t <文件系统类型>][文件系统] 参数: ...