python基础课程_学习笔记20:标准库:有些收藏夹——os
标准库:有些收藏夹
os
os模块为您提供访问多个操作系统服务特征。
os和它的子模块os.path还包含一些用于检查、构造、删除文件夹和文件的函数,以及一些处理路径的函数。
os模块中一些重要函数和变量
|
函数/变量 |
描写叙述 |
|
environ |
对环境变量进行映射 |
|
system(command) |
在子shell中运行操作系统命令 |
|
sep |
路径中的分隔符 |
|
pathsep |
分隔路径的分隔符 |
|
linesep |
行分隔符(‘\n’,’\r’,’\r\n’) |
|
urandom(n) |
返回n字节的加密强随机数据 |
os.environ映射包括前面讲述过的环境变量。如要訪问系统变量PYTHONPATH,能够使用表达式os.environ[‘PYTHONPATH’]。这个映射也能够用来更改系统环境变量。只是并不是全部系统都支持。
os.system函数用于运行外部程序。
也有一些函数能够运行外部程序。包含execv,它会退出python解释器。而且将控制权交给被运行的程序。还有popen,它能够创建与程序连接的类文件。
另外一个函数是windows特有的函数——os.statfile,它接受一般路径,即便空格也没问题。不像os.system那样须要将含空格的字符串放在引號下。
注意:在windows中,由os.system或os.startfile启动了外部程序之后。python程序仍然会继续执行。而在unix中。程序则会停止,等待os.system命令完毕。
os.sep模块变量是用于路径中的分隔符。
Unix的标准分隔符是’/’。windows中的是’\\’,而mac中的是’:’。
pathsep用于分隔路径名:Unix使用’:’,windows使用’;’,mac os使用’::’;
urandom函数使用一个依赖于系统的“真”随机数的源。
假设正在使用的平台不支持它,会得倒NotImplementedError异常。
练习 重命名和删除文件
脚本内容
$ cat os-example-3.py
#File : os-example-3.py
import os
import string
def replace(file,search_for,replace_with):
# replace strings in a text file
back=os.path.splitext(file)[0]+".bak"
temp=os.path.splitext(file)[0]+".tmp"
try:
#remove old temp file,if any
os.remove(temp)
except os.error:
pass
fi=open(file)
fo=open(temp,'w')
for s in fi.readlines():
fo.write(string.replace(s,search_for,replace_with))
fi.close()
fo.close()
try:
#remove old backup file,if any
os.remove(back)
except os.error:
pass
# rename original to backup ...
os.rename(file,back)
# ... and temporary to original
os.rename(temp,file)
# try it out!
file = "samples/sample.txt"
replace(file,"hello","signjing")
replace(file,"signjing","hello")
文件内容
$ cat samples/sample.txt
hello,signjing
hello,everyone
signjing,goodbye
运行结果
$ python os-example-3.py
$ cat samples/sample.txt
hello,hello
hello,everyone
hello,goodbye
练习 列举文件夹下的文件
$ ls samples/
sample.bak sample.txt
脚本内容
$ cat os-example-5.py
# File: os-example-5.py
import os
import sys
print os.listdir(sys.argv[1])
ld=os.listdir(sys.argv[1])
for i in range(len(ld)):
print str(ld[i])
运行结果
$ python os-example-5.py samples/
['sample.txt', 'sample.bak']
sample.txt
sample.bak
练习 更改当前工作文件夹
脚本内容
$ cat os-example-4.py
#File: os-example-4.py
import os
print os.getcwd()
os.chdir("..")
print os.getcwd()
os.chdir("..")
print os.getcwd()
os.chdir("../shoujitrunk")
print os.getcwd()
os.chdir(os.pardir)
print os.getcwd()
运行结果
$ python os-example-4.py
/home/ggz2/magiccube/mysh/pys
/home/ggz2/magiccube/mysh
/home/ggz2/magiccube
/home/ggz2/shoujitrunk
/home/ggz2
练习 创建和删除多个文件夹级
脚本内容
$ cat os-example-6.py
#File : os-example-6.py
import os
os.makedirs("1-dir")
os.makedirs("1-dir/2-dir")
os.makedirs("1-dir/2-dir/3-dir")
os.makedirs("1-dir/2-dir/3-dir/4-dir")
os.makedirs("1-dir/2-dir/3-dir/4-dir/5-dir")
fp=open("./1-dir/2-dir/3-dir/4-dir/5-dir/6-file","w")
fp.write("hello,")
fp.write("signjing")
fp.close()
with open("./1-dir/2-dir/3-dir/4-dir/5-dir/6-file","r") as tf:
for f in tf.readlines():
print str(f)
os.system("ls -Rl ./1-dir/*")
try:
os.rmdir("./1-dir")
except Exception:
print "dir not empty"
try:
os.rmdir("./1-dir/2-dir/3-dir/4-dir/5-dir/")
except Exception:
print "deep dir not empty"
os.remove("./1-dir/2-dir/3-dir/4-dir/5-dir/6-file")
try:
os.rmdir("./1-dir")
except Exception:
print "dir not empty"
try:
os.rmdir("./1-dir/2-dir/3-dir/4-dir/5-dir/")
except Exception:
print "deep dir not empty"
os.removedirs("./1-dir/2-dir/3-dir/4-dir/")
os.system("ls -l ./1-dir/*")
运行结果
$ python os-example-6.py
hello,signjing
./1-dir/2-dir:
总用量 4
drwxr-xr-x. 3 ggz2 tester 4096 7月 5 16:37 3-dir
./1-dir/2-dir/3-dir:
总用量 4
drwxr-xr-x. 3 ggz2 tester 4096 7月 5 16:37 4-dir
./1-dir/2-dir/3-dir/4-dir:
总用量 4
drwxr-xr-x. 2 ggz2 tester 4096 7月 5 16:37 5-dir
./1-dir/2-dir/3-dir/4-dir/5-dir:
总用量 4
-rw-r--r--. 1 ggz2 tester 14 7月 5 16:37 6-file
dir not empty
deep dir not empty
dir not empty
ls: 无法訪问./1-dir/*: 没有那个文件或文件夹
可见:
os.rmdir()用于删除单个空文件夹。
os.removedirs()则用于删除多级的空文件夹;
练习 获取文件信息
脚本内容
$ cat os-example-1.py
#File : os-example-1.py
import os
import time
file="os-example-1.py"
def dump(st):
mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime=st
print "- size:",size,"bytes"
print "- owner:",uid,gid
print "- created:",time.ctime(ctime)
print "- last accessed:",time.ctime(atime)
print "- last modified:",time.ctime(mtime)
print "- mode:",oct(mode)
print "- inode/dev:",ino,dev
st=os.stat(file)
print "stat",file
dump(st)
fp=open(file)
st=os.fstat(fp.fileno())
print "fstat",file
dump(st)
运行结果
$ python os-example-1.py
stat os-example-1.py
- size: 500 bytes
- owner: 504 501
- created: Wed Jun 25 14:46:08 2014
- last accessed: Sat Jul 5 16:39:43 2014
- last modified: Wed Jun 25 14:46:08 2014
- mode: 0100644
- inode/dev: 43127351 2055
fstat os-example-1.py
- size: 500 bytes
- owner: 504 501
- created: Wed Jun 25 14:46:08 2014
- last accessed: Sat Jul 5 16:39:43 2014
- last modified: Wed Jun 25 14:46:08 2014
- mode: 0100644
- inode/dev: 43127351 2055
练习 执行操作系统命令
脚本内容
$ cat os-example-8.py
#File : os-example-8.py
import os
if os.name=='nt':
command = 'dir'
else:
command = 'df -lh'
os.system(command)
执行结果
$ python os-example-8.py
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda2 97G 1.5G 90G 2% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda1 485M 30M 430M 7% /boot
/dev/sda7 709G 78G 596G 12% /home
/dev/sda3 49G 180M 46G 1% /tmp
/dev/sda5 49G 328M 46G 1% /var
练习 退出当前进程
脚本内容
$ cat os-example-9.py
#File : os-example-9.py
import os
import sys
try:
sys.exit(1)
except SystemExit,value:
print "caught exit(%s)" %value
try:
os._exit(2)
except SystemExit,value:
print "caught exit(%s)" %value
print "Bye"
运行结果
$ python os-example-9.py
caught exit(1)
练习 处理文件名称
脚本内容
$ cat os-path-example-1.py
#File : os-path-example-1.py
import os
filename="samples/sample.txt"
print "using",os.name,"..."
print "split","=>",os.path.split(filename)
print "splitext","=>",os.path.splitext(filename)
print "dirname","=>",os.path.dirname(filename)
print "basename","=>",os.path.basename(filename)
print "join","=>",os.path.join(os.path.dirname(filename),os.path.basename(filename))
运行结果
$ python os-path-example-1.py
using posix ...
split => ('samples', 'sample.txt')
splitext => ('samples/sample', '.txt')
dirname => samples
basename => sample.txt
join => samples/sample.txt
版权声明:本文博客原创文章,博客,未经同意,不得转载。
python基础课程_学习笔记20:标准库:有些收藏夹——os的更多相关文章
- python基础课程_学习笔记15:标准库:有些收藏夹——fileinput
标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...
- python基础课程_学习笔记13:标准库:有些收藏夹——sys
标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...
- python基础课程_学习笔记26:编程的乐趣
编程的乐趣 编程柔术 当你坐下来,打算如何组织计划要定时,具体程序,然而,无论什么经验.在实现时间的函数的,你会逐渐学会了原来的设计,实用的新知识.我们不应该忽视沿途汲取的教训,相反,它们用于其他设计 ...
- python基础课程_学习笔记21:文件和材料
文件和材料 打开文件 open功能是用来打开文件,语法例如,下面的: open([name[,mode[,buffering]]) open函数使用一个文件名称作为唯一的强制參数,然后返回一个文件对象 ...
- python基础教程_学习笔记14:标准库:一些最爱——re
标准库:一些最爱 re re模块包括对正則表達式的支持,由于以前系统学习过正則表達式,所以基础内容略过,直接看python对于正則表達式的支持. 正則表達式的学习,见<Mastering Reg ...
- python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/36201499 标准库:一些最爱 集合.堆和双端队 ...
- python基础教程_学习笔记18:标准库:一些最爱——shelve
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/36029981 标准库:一些最爱 shelve S ...
- python基础教程_学习笔记12:充电时刻——模块
充电时刻--模块 python的标准安装包含一组模块,称为标准库. 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 不论什 ...
- python基础课程_2学习笔记3:图形用户界面
图形用户界面 丰富的平台 写作Python GUI程序前,须要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合.能够通过叫做GUI工具包的给定Python模块进行訪问. 工具包 描写叙 ...
随机推荐
- GPU 编程入门到精通(五)之 GPU 程序优化进阶
博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙 ...
- 自己的自定义单元格(IOS)
定义自己的单位格有三种方法 - 代码 - xib - storyboard(推荐) 操作方法故事板 1.在TableView财产Prototype Cells至1.莫感觉1: 2.须要创建自己定义的单 ...
- c#左右socket连接超时控制方案
之前有一个项目中使用Remoting技术.当远程地址无效或server不执行,访问远程对象的方法,它会经过几十秒的时间来抛出异常秒. 由于我使用tcp状态.因此,认为可以使用socket为了测试连接, ...
- JPA实体继承映射
注意:据说,在本文所指的实体是@Entity注解的类. JPA在对象 - 关系映射通常情况下一个实体对应表,不管是什么这两个实体之间的关系.假设两个实体之间的继承关系.那么它是如何映射? JPA实体支 ...
- Spring AOP入门——概念和注意事项
AOP什么? AOP在功能方面,它是之前和之后运行一些业务逻辑,一些操作(比方记录日志.或者是推断是否有权限等),这些操作的加入.全然不耦合于原来的业务逻辑.从而对原有业务逻辑全然是透明. 也就是说. ...
- Dojo Mobile制定学习用品
Dojo Mobile开展 App技术开发QQ群:347072638 技术咨询.APP定制开发联系邮箱:messageloop@qq.com 时代在演变.技术在革新.无论你接受不接受. 初识Dojo ...
- JS日期显示格式 yyyy-MM-dd hh:mm:ss
1.字符串转换为日期 Date.parse() 可以把 Date.toString() 和 Date.toUTCString()返回的字符串转换为日期类型 2.日期对象转换 ...
- 一张地图告诉你,只JavaScript不够!
这将是JavaScript语法,你真的会一JavaScript嘛.看看这个图片!超好用JavaScript一本书的摘录游.熊儿.快去学习! 版权声明:本文博客原创文章.博客,未经同意,不得转载.
- 初步swift该研究指出语言(基本数据类型)
笔者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 检测ORACLE方法汇总数据块损坏
1:使用初始化参数 使用初始化参数db_block_checksum\db_block_checking能够设置数据库对块的物理一致性和逻辑一致性检查. Db_block_checksum:物理一致性 ...