Python: os模块实例详解

import os

操作文件

# I use jupyter notebook to create some file
!touch foo.txt
!echo Hello > foo.txt
!cat foo.txt
Hello
# rename file
os.rename('foo.txt','bar.txt')
!cat bar.txt
Hello
# remove file
os.remove('bar.txt')

改变目录

# current dir
print os.getcwd() # current working directory
/Users/yongle/OMOOC2py/cheat
# go down
os.chdir('img')
print os.getcwd()

# go back up
os.chdir(os.pardir) #or simply os.chdir('..')
print os.getcwd()
/Users/yongle/OMOOC2py/cheat/img
/Users/yongle/OMOOC2py/cheat

遍历目录listdir

# listdir
!touch a.txt b.txt
for file in os.listdir('.'):
    # os.listdir() return a list
    if file.endswith('.txt'):
        print file
a.txt
b.txt

遍历os.walk

os.chdir('doc')
# Directory tree generator.
# For each dir in the dir tree rooted at top (including top
# itself, but excluding '.' and '..'), yields a 3-tuple
# dirpath, dirnames, filenames
for dirpath, dirnames, filenames in os.walk('.'):
    print dirnames
    print filenames
    break # only one level needed, or just use listdir
['folder1', 'folder2']
['.DS_Store', 'a.txt', 'b.txt']

增删目录

单层目录
# make a dir, one level, no duplication allowed
os.mkdir('test')
# remove a dir, one level, not empty will raise OSError
os.rmdir('test') 
多层目录
# make dirs, multipul level
os.makedirs('test/mulitiple/levels')
# remove all empty directories above it, ensure empty
os.removedirs('test/mulitiple/levels')
非空目录
# remove non empty dir, ust a new module shutil.rmtree
# copy function is also useful
import shutil
# copy a.txt to backup folder
# or just shutil.copy('a.txt','backup/')
# use shutil.copytree to copy a folder like cp -r
os.mkdir('backup')
shutil.copy('a.txt',os.path.join('backup','a_backup.txt'))
# remove non empty folder
shutil.rmtree('backup/')

os.path模块

# is a dir or not
print(os.path.isdir('img'))
print(os.path.isdir('a.txt'))
True
False
# is a file or not
print(os.path.isfile('img'))
print(os.path.isfile('a.txt'))
False
True
# determine the presence of path(a file or dir); os.path.lexists?
print(os.path.exists('img'))
print(os.path.exists('a.txt'))
print(os.path.exists('none_exist.txt'))
True
True
False
# Join two or more pathname components, inserting '/' as needed.
# If any component is an absolute path, 
# all previous path components will be discarded.
print(os.path.join('/Users','john'))
print(os.path.join('/Users','/john'))
print(os.path.join('/Users','john','a.txt'))
/Users/john
/john
/Users/john/a.txt
# split a pathname. Returns "(head, tail)" 
# where "tail" is everything after the final slash.
os.path.split('/Users/john/a.txt')
('/Users/john', 'a.txt')
# split the extension from a pathname
os.path.splitext('/Users/john/a.txt')
('/Users/john/a', '.txt')
# determine the size of a path(file or dir)
os.path.getsize('a.txt')
0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android相关

处理器结构--ReorderBuffer

Reorder Buffer用来保存在乱序执行之前的(OOOE)指令执行顺序,当指令集合在乱序执行后按照原有指令顺序将结果提交。

1184
来自专栏你不就像风一样

深入理解[Master-Worker模式]原理与技术

Master-Worker模式是常用的并行模式之一。它的核心思想是,系统由两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任...

1555
来自专栏cnblogs

knockoutjs 上自己实现的flux

在knockoutjs 上实现 Flux 单向数据流 状态机,主要解决多个组件之间对数据的耦合问题。 一、其实简单 flux的设计理念和实现方案,很大程度上人借...

2118
来自专栏CSDN技术头条

c++ fstream + string 处理大数据

起因 (1)之前处理文本数据时,各种清洗数据用的都是java的File,FileReader/FileWriter,BufferedReader/Buffer...

2096
来自专栏开发与安全

muduo网络库学习之Exception类、Thread 类封装中的知识点(重点讲pthread_atfork())

一、Exception类封装 class Exception : public std::exception ?  #include <execinfo.h>...

2270
来自专栏QQ会员技术团队的专栏

玩转webpack(二):webpack的核心对象

作者介绍:陈柏信,腾讯前端开发,目前主要负责手Q游戏中心业务开发,以及项目相关的技术升级、架构优化等工作。 前言 webpack 是一个强大的模块打包工具,之所...

1.1K8
来自专栏数说工作室

5分钟懂模块 | 【SAS Says·扩展篇】IML:4.模块

【SAS Says · 扩展篇】IML:创建模块 这是“CIR模型利率期限结构拟合”中的一段代码,出自《金融计算与建模》(朱世武,367页): ? 注意用红色框...

2666
来自专栏分布式系统进阶

Kafka集群Metadata管理Kafka源码分析-汇总

可以看到是调用了ReplicaManager.maybeUpdateMetadataCache方法, 里面又会调用到MetadataCache.updateCa...

1922
来自专栏Python自动化测试

测试驱动之xml文件的处理

Xml是可扩展标记语言,关于xml的技术本人这里不在介绍,感兴趣的同学可以去w3c看看详细的资料,这里,我仅仅介绍的是如何获取xml文档结构中的...

1143
来自专栏玄魂工作室

RedTigers Hackit SQL 注入题解

今天在一个QQ群看到有同学做http://redtiger.labs.overthewire.org/上的题目。随手做了几题,发现还有点意思,有的题目我也一时想...

6289

扫码关注云+社区