python对操作系统的目录和文件操作

一、获取当前目录下的特定文件列表

>>>import glob,os
>>>curdir = os.getcwd()   #获取当前目录

>>>os.chdir(workdir)        #设置当前目录

>>>dir = glob.glob('*.dat')  #获取当前目录的dat文件列表

>>>os.chdir(curdir)           #还原当前工作目录

>>>print dir
['mudlog.dat','ddd.dat']


二、os模块的文件和目录操作函数
1.获得当前路径
os.getcwd()
  该函数不需要传递参数,它返回当前的目录。
 
>>> import os
>>> print 'current directory is ',os.getcwd()
current directory is  D:/Python25/Lib/site-packages/pythonwin
#这里是PythonWin的安装目录

2.获得目录中的内容
os.listdir(path)     path:要获得内容目录的路径。

>>> import os
>>> os.listdir(os.getcwd())    # 获得当前目录中的内容
['dde.pyd', 'license.txt', 'Pythonwin.exe', 'scintilla.dll', 'win32ui.pyd',
'win32uiole.pyd', 'pywin']

3.创建目录
os.mkdir(path)    path:要创建目录的路径。

>>> import os
>>> os.mkdir('E://book//temp')   # 使用os.mkdir创建目录

4.删除目录
os.rmdir(path)   path:要删除的目录的路径。

>>> import os
>>> os.rmdir('E://book//temp')   # 删除目录

需要说明的是,使用os.rmdir删除的目录必须为空目录,否则函数出错。

若想删除非空目录,先删除目录下的文件,然后再删除目录,递归过程。

5.判断是否是目录
os.path.isdir(path)    path:要进行判断的路径。

>>> import os
>>> os.path.isdir('E://book//temp')  # 判断E:/book/temp是否为目录
True           # 表E:/book/temp是目录

6.判断是否为文件
os.path.isfile(path)   path:要进行判断的路径。

>>> import os
>>> os.path.isfile('E://book//temp')  # 判断是否为文件
False           # 表示E:/book/temp不是文件


三、批量重命名

在日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按照一定的规律重新命名。如果手工完成的话,需要耗费大量的时间,而且

容易出错。在学习Python以后,完全可以写一个简单的脚本完成这样的工作。

import os
perfix = 'Python'      # perfix 为重命名后的文件起始字符
length = 2         # length 为除去perfix后,文件名要达到的长度
base = 1         # 文件名的起始数
format = 'mdb'       # 文件的后缀名

# 函数PadLeft将文件名补全到指定长度
# str 为要补全的字符
# num 为要达到的长度
# padstr 为达到长度所添加的字符
def PadLeft(str , num , padstr):
stringlength = len (str)
n = num - stringlength
if n >=0 :
str=padstr * n + str
return str

# 为了避免误操作,这里先提示用户
print 'the files in %s will be renamed' % os.getcwd()
input = raw_input('press y to continue/n') # 获取用户输入
if input != 'y':       # 判断用户输入,以决定是否执行重命名操作
exit()
filenames = os.listdir(os.curdir)   # 获得当前目录中的内容

# 从基数减1,为了使下边 i = i + 1在第一次执行时等于基数
i = base - 1
for filename in filenames:    # 遍历目录中内容,进行重命名操作
i = i+1

# 判断当前路径是否为文件,并且不是“rename.py”
if filename != "rename.py" and os.path.isfile(filename):
name = str(i)      # 将i转换成字符
name = PadLeft(name,length,'0') # 将name补全到指定长度
t = filename.split('.')   # 分割文件名,以检查其是否是所要修改的类型
m = len(t)
if format == '':     # 如果未指定文件类型,则更改当前目录中所有文件
os.rename(filename,perfix+name+'.'+t[m-1])
else:        # 否则只修改指定类型
if t[m-1] == format:
os.rename(filename,perfix+name+'.'+t[m-1])
else:
i = i – 1     # 保证i连续
else:
i = i – 1       # 保证i连续


四、代码框架生成器
编写代码要养成良好的习惯,为了使脚本更具可读性,往往需要添加注释,而且还应该在脚本头添加基本的说明,如作者、文件名、日期、用途、版权说明,以及所需要使用的模块等信息。这样,不仅便于保存脚本,而且也便于交流。但是,如果每次编写一个脚本就依次添加这样的信息,不免有些麻烦,以下代码实现了一个简单的代码框架生成器。

# -*- coding:utf-8 -*-
# file: MakeCode.py
#
import os
import sys
import string
import datetime
# python脚本模板
py = '''#-----------------------------------------------------
# TO:      
#-----------------------------------------------------
# BY:
#-----------------------------------------------------
'''
# c模板
c = ''' *-----------------------------------------------------
* TO:      
*-----------------------------------------------------
* BY:
*-----------------------------------------------------
'''
if os.path.isfile(sys.argv[1]):   # 判断要创建的文件是否存在,如果存在则退出脚本
print '%s already exist!' % sys.argv[1]
sys.exit()
file = open(sys.argv[1], 'w')    # 创建文件
today = datetime.date.today()    # 获得当前日期,并格式化为xxxx-xx-xx的形式
date = today.strftime('%Y')+'-'+today.strftime('%m')+'-'+today.strftime('%d')
filetypes = string.split(sys.argv[1],'.') # 判断将创建的文件是什么类型以便对其分别处理
length = len(filetypes)
filetype = filetypes[length - 1]
if filetype == 'py':
print 'use python mode'
file.writelines('# -*- coding:utf-8 -*-')
file.write('/n')
file.writelines('# File: ' + sys.argv[1])
file.write('/n')
file.write(py)
file.write('# Date: ' + date)
file.write('/n')
file.write('#-----------------------------------------------------')
elif filetype == 'c' or filetype == 'cpp':
print 'use c mode'
file.writelines(' /n')
else:
print 'just create %s' % sys.argv[1]
file.close()        # 关闭文件

写好的脚本可以放到Windows的系统目录中,这样就可以随时运行,方便地在目录中产生Python脚本或者C/C++文件。


五、运行其他程序
在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码。
使用os.system函数运行其他程序
os模块中的system()函数可以方便地运行其他程序或者脚本。其函数原型如下所示。
os.system(command)      command :要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数。

以下实例实现通过os.system()函数打开系统的记事本程序。

>>> import os
# 使用os.system()函数打开记事本程序
>>> os.system('notepad')
0 # 关闭记事本后的返回值
# 向记事本传递参数,打开python.txt文件
>>> os.system('notepad python.txt')

From:http://book.51cto.com/art/200710/58166.htm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见漏洞

Cookie without HttpOnly flag set 如果在Cookie上设置了HttpOnly属性,则客户端JavaScript无法读取或设置Cookie的值。 这种措施通过阻止某些客户端攻击(例如跨站点脚本),通过阻止它们通过注入的脚本来简单地捕获cookie的值&…

python函数星号参数

2011-09-01 17:35 2人阅读 评论(0) 收藏 编辑 删除 今天有个工作是导出一个函数给脚本用 我自已先要测一下 先要客户端发送一个消息给服务器 看了下C部分的代码,如下 "def onNetMessage(self,playerID, msgName,msgParam):\n" //客户端调用服务器脚本 " …

MachineLearning(3)-流型

流型-manifold在很多机器学习的文章中会见到“嵌入在高维空间的低维流型”这样的字眼,下记录一些重要概念。参考资料:https://blog.csdn.net/sinat_32043495/article/details/789977581.流型 局部具有欧几里得空间性质的空间(流型就是一个空间…

C/C++常见面试题(四)

C/C面试题集合四 目录 1、什么是C中的类?如何定义和实例化一个类? 2、请解释C中的继承和多态性。 3、什么是虚函数?为什么在基类中使用虚函数? 4、解释封装、继承和多态的概念,并提供相应的代码示例 5、如何处理内…

机器学习问题总结(03)

文章目录1.struct和class区别,你更倾向用哪个2.kNN,朴素贝叶斯,SVM的优缺点,各种算法优缺点2.1 KNN算法2.2 朴素贝叶斯2.3SVM算法2.4 ANN算法2.5 DT算法3. 10亿个整数,1G内存,O(n)算法,统计只出…

python源代码现成重用大全

Nullege is a search engine for Python source code. http://nullege.com/

redis——新版复制

sync虽然解决了数据同步问题,但是在数据量比较大情况下,从库断线从来依然采用全量复制机制,无论是从数据恢复、宽带占用来说,sync所带来的问题还是很多的。于是redis从2.8开始,引入新的命令psync。 psync有两种模式&a…

Python(23)-面向对象2-继承,多态

面向对象基本概念2--继承、多态1.继承基本概念2.子类重写父类方法2.1完全重写2.2扩展父类方法--super()3.多继承4.新式类和旧式类5.多态基本概念6.类属性、类方法-classmethod6.1类属性6.2类方法classmethod7.静态方法staticmethod8.案例分析本系列博文来自学习《Python基础视频…

Linux Linux 集群

Linux 集群 Page navigation 什么是集群?集群分类基于 Linux 的集群Linux 服务器集群系统Linux 高性能计算集群集群系统 MOSIX构建 Linux 集群IBM 与 Linux 集群 本专题收集了 Linux 集群相关的文章和教程。 什么是集群? 简单的说,集群(cluster&#x…

机器学习问题总结(04)

文章目录1、MLP的BP过程2、maxpool层BP怎么做的2.1 **mean pooling**2.2 max pooling3、opencv遍历像素的方式,讲两种?4、传统图像处理有了解过吗,比如去噪 特征提取5、问在linux下写过代码吗? 问用了什么软件工具6、LDA&#xff…

持续更新的Zookeeper知识总结

简介 Zookeeper为分布式应用 提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、发布订阅、负载均衡、配置管理和分布式锁等分布式的基础服务。 设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集&#xf…

Python(24)-面向对象3-可迭代类对象Pokemon

面向对象3-Pokemon demo1.可迭代类对象1.可迭代类对象 想要实现类对象中某些属性/数值的迭代访问,需要在类中定义一个__iter__()方法,和__next__() 的方法(python 2 中为next()方法)。 _iter_()返回值是self, _next_()中遍历完所有的元素后发…

机器学习问题总结(05)

文章目录1. Hadoop、Spark1.1 hadoop1.2 spark1.3 MapReduce1.3.1 概念1.3.1 MapReduce执行流程2、机器学习场景3、推荐系统(预测电影等级)4、CTR(点击通过率 -> 广告)5、SVM5.1 svm的原理5.2 SVM的核技巧6、K-means6.1 K-mean…

基于Socket的UDP和TCP编程介绍

一、概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(streamsocket)的一种。 UDP:用户数据报协议。U…

Python(25)-单例设计模式

单例设计模式1.单例设计模式2.__new__方法3.初始动作只执行一次本系列博文来自学习《Python基础视频教程》笔记整理,视屏教程连接地址:http://yun.itheima.com/course/273.html1.单例设计模式 设计模式:不同的问题使用不同的解决套路。学习设…

Linux Socket通信 C/S模型

代码片段(8) [代码] MySocket.h 01#ifndef _MYSOCKET_0623_H 02#define _MYSOCKET_0623_H 03 04#include <sys/socket.h> 05#include <sys/types.h> 06#include <arpa/inet.h> 07#include <netinet/in.h> 08#include <sys/wait.h> 09#include &…

Java多线程——基本概念

线程和多线程 程序&#xff1a;是一段静态的代码&#xff0c;是应用软件执行的蓝本 进程&#xff1a;是程序的一次动态执行过程&#xff0c;它对应了从代码加载、执行至执行完毕的一个完整过程&#xff0c;这个过程也是进程本身从产生、发展至消亡的过程 线程&#xff1a;是比…

textCNN初探

文章目录目录1.什么是textCNN1.1 textCNN 提出的背景1.2 textCNN 合理性分析2.textCNN相比于传统图像领域的CNN有什么特点&#xff1f;3.textCNN例子讲解3.1 参数和超参数3.2 textCNN的数据3.3 textCNN的网络结构定义3.4 代码目录 1.什么是textCNN 1.1 textCNN 提出的背景 我…

Python(28)-异常

异常1.抛出异常2.捕获异常3.依据错误类型捕获异常4.捕获未知错误5.异常捕获的完整语法6.异常传递7.主动抛出异常本系列博文来自学习《Python基础视频教程》笔记整理&#xff0c;视屏教程连接地址&#xff1a;http://yun.itheima.com/course/273.html1.抛出异常 抛出异常&#…

词嵌入初探

文章目录目录1.词嵌入产生的背景1.1 NLP关键&#xff1a;语言的表示1.2 NLP词的表示方法类型1.2.1 独热表示one-hot1.2.2 词的分布式表示distributed representation1.3 NLP中的语言模型1.4 词的分布表示1.4.1 基于矩阵的分布表示1.4.2 基于聚类的分布表示1.4.3 基于神经网络的…