网络爬虫

01-Python 文件目录操作

2017-07-30  本文已影响738人  liangjz

Python 文件和目录操作

Menu

Pycharm 和 Jupyter notebook

Pycharm

Jupyter notebook

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

安装

   # 命令行执行
   pip3 install 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

通配符介绍

代码示例

# 引入包名
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文件完成!')

上一篇 下一篇

猜你喜欢

热点阅读