美文网首页网络爬虫
01-Python 文件目录操作

01-Python 文件目录操作

作者: liangjz | 来源:发表于2017-07-30 11:10 被阅读738次

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文件完成!')

相关文章

  • 01-Python 文件目录操作

    Python 文件和目录操作 Menu Pycharm 和 Jupyter notebook 列出指定目录下的所有...

  • 文件和目录处理相关

    文件和目录处理相关 题: 考点:文件操作/写入操作; 延伸:目录操作函数,其他文件操作; 文件读写操作 文件系统函...

  • Linux文件操作

    文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...

  • 【产品设计】iOS网盘类别 针对单文件、多文件、目录操作

    单文件操作 文件内页 目录操作

  • Java实现文件目录操作书目录

    Java实现文件目录操作之使用IO和NIO创建目录 Java实现文件目录操作之递归遍历目录和文件 Java实现文件...

  • Mac shell使用技巧总结

    1.文件操作 常用目录 资源库 目录 文件操作 选择操作 文件编辑 将文件转成 HTML,支持格式包括 Text,...

  • Linux命令行

    文件和目录操作 复制文件目录 移动文件目录 重命名文件目录 删除文件目录 创建文件目录 查看文件内容 查看文件类型...

  • PHP第五节--文件目录操作

    目录操作 读取目录操作 方式一 方式二 修改目录 修改目录名称 创建文件目录 删除文件目录 rmdir()rmdi...

  • Linux命令

    Linux 操作命令 文件路径操作从当前目录开始 文件路径操作从更目录上一级目录 文件权限 读,写,执行分别用r,...

  • Mac shell使用技巧总结

    整理了常用的Mac使用技巧 1.文件操作 常用目录 资源库 目录 文件操作 选择操作 文件编辑 将文件转成 HTM...

网友评论

    本文标题:01-Python 文件目录操作

    本文链接:https://www.haomeiwen.com/subject/jevhlxtx.html