Python爬虫入门 文件基本操作概况

  • 1. 创作背景
  • 1.1 IO编程介绍
  • 2.1 文件读取
  • 2.2 文件的写入
  • 3.1 os 模块的练习使用
  • 3.2 对于shutil模块的运用及练习
  • 总结


1. 创作背景

由于最近在入门爬虫,接触到了很多地方需要掌握到对于文件的熟悉以及操作,所以我就通过网络平台总结了一些常用的文件基本用法及操作,并且一一在Python3.6.4的环境基础下进行了逐一实例实现,把总结下来的经验与成果·拿在这里和大家一起分享,为同学Python爬虫的同志添砖加瓦。

1.1 IO编程介绍

  • IO在计算机中是指input/output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的核心来执行,涉及到数据交换的地方,通常是磁盘,网络等,这里就需要IO接口。
    通常,程序完成IO操作会有input和output两个数据流。在IO编程中stream是一个很重要的概念,顾名思义stream就是一根里面由水流流过的水管,数据就是里面的水,但是只可以单向流动。
  • 另外一个值得注意的问题就是CPU和内存的速度远远高于外设的速度,因此在IO编程中存在速度严重不匹配的问题。为了解决这个问题,有两种方法:同步IO和异步IO。下面讲的主要是同步IO。异步复杂度较高。

2.1 文件读取

Grammar:open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])

参数说明:一般我们会用到以下三个参数:

  1. file 文件路径,以字符串输入;
  2. mode文件打开模式,详见预备知识,以字符串输入;
  3. encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk。
  4. 返回值说明:open()函数返回一个文件对象。

Introduction:close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作,否则会触发ValueError错误。close()方法允许调用多次。

Notice:当file对象,被引用到操作另外一个文件时,Python会自动关闭之前的file对象。 使用close()方法关闭文件是一个好的习惯。

读取操作练习的代码实现如下:

# 读取文件内容
try:
    f = open('D:\Richard_exercise.txt', 'r')  # 原路径
    print (f.read())
finally:
    if f:
        f.close()
with open('.\Richard_exercise.txt', 'r') as fileReader:
    for line in fileReader.readlines():
        print (line.strip())
  • 读文件,文件对象的read(),readline(),readlines()方法



Notice:注意打开文件时要给文件对象读的权限。

2.2 文件的写入

写入操作练习的代码实现如下:

# 文件的写入练习
    f = open('.\Richard_exercise.txt', 'w') 
    f.write('I love Weiwei')
    f.flush()
    n = input('输入回车')
    f.close()
    with open('.\Richard_exercise.txt', 'w') as fileWriter:
        fileWriter.write("I only love Weiwei")
        fileWriter.flush()
        n = input('键入回车')
        fileWriter.close()
  • 写文件,文件对象的write(),writelines()方法
  1. f.write(str): str是一个字符串,存放你要写入的内容;
  2. f.writelines(sequence): sequence是一个序列,比如列表,它会迭代帮你写入文件。
# coding=utf-8
f = open('D:\example.txt','w')  
#  将写入属性“w”改为属性“a”,表示循环写入
list = ['frog',' ','cat',' ','dog']
f.writelines(list)
f.close()

Explanation:上述代码可以将list中的元素写入D盘下的example.txt文件,文件中会出现如下内容:frog cat dog。

注意:writelines()方法不会为每一个元素自动添加换行。

3.1 os 模块的练习使用

os 模块的操作练习使用代码实现如下:

# os 模块的练习使用
import os  
direction_path = os.getcwd()  # 获取当前python脚本工作的目录路径
print(direction_path)
file_direction = os.listdir("d:\\")  # 返回所有文件名和目录名
print(file_direction)
os.remove(r"F:\Richard_exercise_remove.txt")  # 删除一个文件,其中'r'为·防止转义字符
os.removedirs(r"E:\new_build")  # 删除多个空目录
print(os.path.isfile(r".\Richard_exercise"))  # 路径是否为文件
print(os.path.isdir(r".\Richard_exercise"))   # 路径是否为目录
print(os.path.isabs(r".\Richard_exercise"))  # 判断绝对路径
print(os.path.exists(r".\Richard_exercise.txt"))  # 判断路径是否存在
print(os.path.split(r".\Richard_exercise.txt"))  # 分离路径和文件名
print(os.path.splitext(r".\Richard_exercise.txt"))  # 分离拓展名
print(os.path.dirname(r"F:\Computer\Computer_Python\File_operation_exercise\Richard_exercise"))  # 获取路径名
print(os.path.basename(r"F:\Computer\Computer_Python\File_operation_exercise\Richard_exercise"))  # 获取文件名
os.getenv() && os.putenv()  # 分别为读取和设置环境变量,有机会举几个例子
os.linesep  # 平台的行终止符 Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
print(os.name)  # 指示出正在使用的平台,Windows是‘nt’而Linux/Unix是‘posix’
os.rename(".\Richard_exercise.txt", ".\Richard_new_exercise.txt")  # 重命名文件或者目录
os.makedirs(r".\Richard_exercise")  # 创建多级目录(文件夹)
os.mkdir("Richard")  # 创建单个目录
print(os.stat(".\Richard_exercise"))  # 获取文件属性
os.chmod(path, mode)  # 修改文件权限与时间戳
print(os.path.getsize(r".\Richard_new_exercise.txt"))  # 获取文件大小
os.rmdir(r"F:\Computer\Computer_Python\Exercise\Richard_exercise")  # 删除空目录

3.2 对于shutil模块的运用及练习

shutil 模块的操作练习使用代码实现如下:

# 对于shutil模块的运用及练习
import shutil  
shutil.copytree(".\Richard_exercise", (".\Richard_new_exercise"))  # 复制文件夹
shutil.copyfile(r".\Richard_new_exercise.txt", r".\Richard_exercise.txt")  # 复制文件
shutil.copy(r".\Richard_exercise.txt", r"F:\Computer\Computer_Python\Exercise")  # 复制文件,可以指明目标目录
shutil.move(r"Richard_exercise", r"F:\Computer\Computer_Python\Exercise")
shutil.rmtree(r"F:\Computer\Computer_Python\Exercise\remove")  # 删除目录不论是否具有内容

总结

做完这些操作练习之后,希望大家对于文件的基本操作能够铭记于心,掌握好语法架构与具体运用到的不同参数的含义及使用,能够做到在没有任何参考资料的情况之下,结合自己所要达到的目的,自己编写出相应的代码程序,并且去实现它,这样的一种能力,才是真正属于你的东西。接下来,你就可以身上扛起这项能力,去敲Python爬虫的门啦,放肆的去探索、去体验吧!