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 条评论
登录 后参与评论

相关文章

来自专栏云飞学编程

Python新手爬虫,简单制作抓取廖雪峰的教程的小爬虫

先看几张对比图,分别是官网截图和抓取下来的txt文档的截图,不算那难看的排版的话,内容是一致的,图片用url替换了!

811
来自专栏武军超python专栏

2018年7月23日python系统模块os和文件io

今天遇到的新单词: attrubute:    n属性 cwd全称:     Current Working Directory当前工作目录 argume...

1005
来自专栏从零开始学自动化测试

python文档25-fixture的作用范围(scope)

fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function

723
来自专栏C/C++基础

Linux命令(31)——find命令

find命令用于在指定目录查找文件,可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳来查找文件。

814
来自专栏程序员互动联盟

【一起学python】实现简单爬虫功能

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。   我们最常规的做法就是通...

2994
来自专栏Python

Flask-配置与调试

配置管理 复杂的项目需要配置各种环境。如果设置项很少,可以直接硬编码进来,比如下面的方式: app = Flask(__name__) app.config['...

2726
来自专栏邹立巍的专栏

find 命令详解

find 命令是我们日常工作中比较常用的 Linux 命令。全面的掌握这个命令可以使很多操作达到事半功倍的效果。如果对 find 命令有以下这些疑惑,本文都能帮...

4221
来自专栏LanceToBigData

linux(五)之vi编译器

前面介绍了linux的常用命令和对文本的操作,接下来我将对大家领略一下vi编译器的强大功能。 希望大家觉得写的还不错的话可以点个“推荐”哦! 一、vim/vi编...

1898
来自专栏java思维导图

Vim 命令、操作、快捷键(收藏大全)

以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。

783
来自专栏林德熙的博客

win10 uwp 调用 Microsoft.Windows.Photos_8wekyb3d8bbwe 应用

本文告诉大家调用的 Microsoft.Windows.Photos_8wekyb3d8bbwe 是什么应用

1211

扫码关注云+社区