01-Python 文件目录操作

Python 文件和目录操作

Menu

  • Pycharm 和 Jupyter notebook
  • 列出指定目录下的所有文件
  • 创建文件夹和文件移动
  • 按照规则修改指定指定文件夹下文件的名称
  • 读写文本文件
  • 读写Excel文件

Pycharm 和 Jupyter notebook

Pycharm

  • 编写python代码

    • 自动缩进:pyhton使用缩进控制代码的所属关系,例如
    #right
    def fun(a,b):
        c=a+b
        return c
        
    #wrong
    def fun(a,b):
    c=a+b
    return c
    
    #wrong
    def fun(a,b):
            c =a+b
            return c
    

    pycharm会帮助你自动在行首添加缩进

    • 错误检测:一些明显错误的代码能够帮你用红色的下划线标识出来
    • 关键词着色: 自动给关键词、变量名、普通代码等使用不同的颜色,方便代码阅读和理解
    • 代码智能提示:变量名和关键词的自动补全
  • 执行python代码

    • 执行当前代码文件,并将对应的控制台(cmd)输出展示出来
  • 调试python代码等其他高级功能

Jupyter notebook

一个交互式的笔记本,使用方式类似于matlab的交互式窗口,支持多种语言(包括python),可以运行单条命令并查看对应的结果,可以记录笔记。

安装

   # 命令行执行
   pip3 install jupyter
  • 启动jupyter
    1. 在命令行执行 jupyter notebook
    2. 用浏览器打开 http://127.0.0.1:8888

列出指定目录下的所有文件

方法1 使用os.listdir()

# 列出目录 /Users/liangjz/abc/ 下面的所有文件和目录
import os
os.listdir('/Users/liangjz/abc/')
# 列出当前目录下所有的文件和目录
import os
os.listdir()
# 列出指定目录下的所有文件 (包含子文件的子文件)

# 定义个函数,来列出目录下所有文件的路径
def list_son_dir(dir_path):
    #获取某个目录下是所有文件名
    file_names = os.listdir(dir_path)
    # 遍历每个文件名
    for file_name in file_names:
        # 拼接出这个文件的完整路径
        file_path  = os.path.join(dir_path,file_name)
        # 把路径打印出来
        print(file_path)
        # 判断这个路径是不是一个文件夹
        if os.path.isdir(file_path):
            # 如果是文件夹
            list_son_dir(file_path)
        else:
            #如果不是文件夹(是一个文件),什么都不做
            pass
        
# 调用这个函数
list_son_dir('.')

方法2 使用glob包

glob是一个简单容易上手的文件匹配包,支持使用简单的通配符进行配匹配,包括: * ? []
安装 pip3 install glob

通配符介绍

    • (匹配文件名中的0个或任意多个字符)
  • ?(匹配文件名中的单个字符)
  • [] (使用字符区间([a-z]),可以匹配多个字符中的一个字符)

代码示例

# 引入包名
import glob 
 
 # 匹配多个路径下的特定后缀的文件名
print glob.glob('E:\*\*.doc') 
print glob.glob('.\*.py') 

# iglob返回的是一个可迭代的对象,必须要使用循环才能依次取出其中的文件名列表
f = glob.iglob('.\*.py') 
for py in f: 
    print py 
import glob
# 通配符?的使用
for name in glob.glob('tmp/chec?_traffic.sh'):
  print name

import glob
# 字符区间的使用
for name in glob.glob('tmp/one/[a-z]*'):
  print name

文件夹创建和文件移动

创建文件夹

python 创建文件包含两种情况 1.创建单层目录 2.创建多层目录
具体来讲,创建单层目录一次只能创建一级目录,创建多层目录则可以一次创建多级不存在的目录

代码示例

# 创建单层目录,如果上级目录不存在则会报错
import os
os.mkdir('f:/a/b')
# 创建单层目录,如果上级目录不存在,则会尝试创建路径中缺失的所有目录,不会报错
import os
os.mkdirs('f:/a/b/c/d')

删除目录和文件

删除文件

# os.remove 只能删除文件,不能删除文件夹(会报错),如果被删除的文件正在使用也会报出异常,所以使用前确认被删除的文件没有被代码或者程序打开
import os
os.remove('f:/a/b/c.txt')

删除文件夹

# 删除目录 path,要求path必须是个空目录
os.rmdir(path)
# 递归地删除目录。类似于rmdir(), 如果子目录被成功删除, removedirs() 将会删除父目录;但子目录没有成功删除,将抛出错误。
os.removedirs(path)

移动文件(复制,移动)

复制

安装shutil包:pip3 install shutil

复制文件

import shutil
# oldfile和newfile都只能是文件
shutil.copyfile("oldfile","newfile")      

# oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
shutil.copy("oldfile","newfile")         

复制目录

import shutil
# olddir和newdir都只能是目录,且newdir必须不存在
shutil.copytree("olddir","newdir")        

重命名文件(或目录)

import os
# 文件或目录都是使用这条命令
os.rename("oldname","newname")       

或者

import shutil
#移动文件(目录)
shutil.move("oldpos","newpos")  

练习按照规则修改指定文件夹的文件名称

读写文本文件

读写文件的操作基本都可以分为三部分:

  1. 打开文件
    2.进行操作(读取或写入).
    3.关闭文件

读取文件文件

# step1 打开文件
# 'f:\a\b\c.txt' 待读取的文件路径
# ‘rt’ 文件的打开模式 r -> read t-> text ,w -> write a-> append b-> binary
# encoding='utf-8' 文件编码, 这个参数一般不填, 常用的参数编码有 utf-8 和 gbk
    a_file = open('f:\a\b\c.txt','rt',encodeing='utf-8')
# step2 读取文件
    # 从文本中新读取一行内容
    line = a_file.read_line()
    print(line)
    # 遍历one_file中的剩余所有行内容
    for line in a_file:
        # 输出到屏幕
        print(line)
# step3 关闭文件
    a_file.close()

将内容写入文本文件

# step1 打开文件
# 写入模式,如果文件不存在会创建,如果已有内容会清空
a_file = open('f:\a\b\c.txt','w')
# 追加模式,打开已有的文件,并在尾部追加内容
a_file = open('f:a\b\c.txt','a')
# step2 向文件中写内容
# 写入100 行数据
for i in range(0,100):
    # 每行具体的内容为行号+换行符
    a_file.write(str(i)+'\n')
# step3 关闭文件
a_file.close()

读写Excel文件

python 读写Excel文件需要安装额外的包的进行支持
安装命令
pip3 install xlrd
pip3 install xlwt
除了这两个包之外还有其他的包可用,网上有人做了内容的整理,对这些包的优缺点进行了比较[python Excel读写包优缺点]

读取Excel文件

读取excel文件使用xlrd包,xlrd包对.xlsx后缀的文件支持不是很好,如果遇到问题,可以先将.xlsx的文件转换成.xls格式(用excel转)

import xlrd
excel_file = 'f:\a\b\c.xls'
# 打开一个xls文件
data = xlrd.open_workbook(excelFile)
# 获取第一个sheet(excel左下角的标签为sheet)
table = data.sheets()[0]
# 看看这个sheet中有多少行,多少列
nrows = table.nrows #行数
ncols = table.ncols #列数
for i in xrange(0,nrows):
#某一行数据
rowValues= table.row_values(i)  
# 挨个打印这一行中的各列数据
for item in rowValues:
    print item

# 获取某行某列的数据
my_value = table.cell_value(1,1)
print(my_value)
# 关闭文件
data.close()

写入Excel文件

进行写Excel文件时,需要引入xlwt的包

import xlwt
#创建workbook和sheet对象
#注意Workbook的开头W要大写
workbook = xlwt.Workbook() 
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
#向sheet页中某行某列写入数据
# 行 列  内容
sheet1.write(0,0,'this should overwrite1')
sheet1.write(0,1,'aaaaaaaaaaaa')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'bbbbbbbbbbbbb')
"""
#-----------使用样式-----------------------------------
#初始化样式
style = xlwt.XFStyle() 
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#设置样式的字体
style.font = font
#使用样式
sheet.write(0,1,'some bold Times text',style)
#保存该excel文件,有同名文件时直接覆盖
workbook.save('f:/a/b/c.xls')
print('创建excel文件完成!')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容