Python简单源码解析
2016-08-22 13:39
417 查看
主要为一些简单的源代码的解析以及一些方法的理解。
说明:这些文件都不是我写的,详情可参考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))
os.listdir():列出当前目录下的所有文件,为文件的名称,而不是包含路径的名称,同样不包含子目录内的文件;
os.path.splitext():分割文件,分为文件名和文件类型。文件类型为最后一个
.和后缀名,文件名称为最后一个
.前的所有内容。
replace():字符串替换
os.path.join():用组合的方式将文件路径和文件名称组合为绝对路径。不同的系统添加的内容不一样。和join一样,但功能特殊化。
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)
os.path.exists():判断文件夹是否存在
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)
os.stat():获取文件的系统状态信息,返回一个系统状态信息的元组。
stat模块
time.localtime():格式化时间,输入为sec(秒)
针对字典的格式化输出,有两种方式:
a. print("%(fname)s" % file_info)
b. print("%s" % file_info["fname"])
time.strftime():将当前时间格式化为字符串。
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
os.walk():遍历文件夹,其中遍历为广度优先遍历。即,先遍历当前的文件夹,一步一步深入遍历,同时,根据参数不同遍历的方式也不同。
a. path为当前的路径。
b. dirs为当前路径是否包含子目录,没有为
[]
c. files为当前路径的文件列表。
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"
zip.exe:压缩程序
os.popen():调用exe,其中的参数和cmd参数一样,需要用空格区分,并且程序执行的目录页需要切换正确,不然会导致程序假执行的状态。
os.chdir():切换工作目录
files.endswith():判断后缀方法。
from time import strftime:导入某个某块的某一部分,避免全部导入。
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()
详情参考subprocess.Popen()中的参数设定。
nslookup命令参数,详情可
nslookup /?(windows)
stdout标准输出,将执行结果写入到file_out文件中。
写文件最后记得关闭文件。
相关文章推荐
- python源码PyObject简单解析
- 用python来解析xml文件(简单情况)
- 一个简单的python代理服务器源码分析
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.2)源码及解析
- python源码:python简单实现网站目录扫描器
- Python源码分析2 - 一个简单的Python程序的执行
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- 简单爬虫python实现01——获取网页源码与存储
- 注解(Annotation)源码解析--简单实现(Hibernate,EJB,JPA)
- python自定义解析简单xml格式文件
- opencv源码解析之(5):CommandLineParser类的简单理解
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.2)源码及解析
- 用python来解析xml文件(简单情况)
- 使用Python中HTTPParser模块进行简单的html解析
- [Python]网络爬虫:百度贴吧的网络爬虫(v0.4)源码及解析
- underScore 源码解析(一)----简单介绍
- 一个简单的python网页解析+本地文件名修改的小程序
- opencv源码解析之:CommandLineParser类的简单理解