zoukankan      html  css  js  c++  java
  • [从零开始学Python]4.文件操作

    文件的读写

    1.文件的读取

    1.按字符读取文件

    当我们需要对文件进行操作的时候,首先需要打开文件流

    在这里用到了open()函数,open()函数中的参数,必选参数为路径,此处的路径可以填写相对路径或者绝对路径(相对路径更利于文件的迁移)。还有非强制性的参数,有模式参数,'r’以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

    # 按照字符读取文件
    f = open('./a.txt','r')
    content = f.read(3)
    print(content)
    f.close()
    print('='*50)

    如果在执行中遇到了如下的错误提示

    UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 4: illegal multibyte sequence

    对于这种无法解码gbk格式的文件,我们可以在open()函数中添加一个参数 encoding=‘utf-8’,即编码格式为utf-8

    2.按行读取文件

    如果希望读取某个文件中的全部内容,那么可以按行读取,当读取到某一行的长度为0了,那么证明读取完了。

    # 按行读取文件
    f = open('./a.txt','r',encoding='utf-8')
    content = f.readline()
    while len(content)>0:
        print(content)
        content = f.readline()
    f.close()
    print('='*50)

    2.文件的写入

    写入的操作,首先对文件的打开open()函数中,打开模式应给一个’w’写权限

    写入操作可以以字符串为单位进行单一行的写入,还可以以列表为单位进行多行的写入。

    # 文件的写入操作
    f = open('./b.txt','w')
    f.write('hello python
    ')
    a = ['hello java
    ','hello php
    ','hello c++
    ']
    f.writelines(a)
    f.close()

    OS文件操作模块

    在操作系统中,我们经常会用到复制某个文件夹这样的功能,而看似简单的操作背后实际需要很多个步骤,

    那么复制一个文件夹到底需要几个步骤呢?

    第一步:获取源目录的目录信息,其中一个个路径,既有文件也有目录,(目录是特殊的文件)

    第二步:创建一个新的目录

    第三步:一条条地判断这些路径,

    ​ 如果是普通文件,我们就应该把这个文件复制到新的目录中去

    ​ 如果是目录文件,那么应该递归调用,把这个子目录按照复制目录的方式去处理

    在这个过程中我们用到了os模块中的几个函数

    os.listdir(path路径)————》用于获取这个路径的目录信息

    os.mkdir(dir2)————》用于创建一个新的目录

    os.path.join(dir1,f)————》拼接路径,把目录的路径和文件名拼接成一个完整的路径

    # 文件复制函数
    def copy_file(file1,file2):
        '''
        实现文件的复制
        :param file1: 源文件
        :param file2: 目标文件
        :return: None
        '''
        # 打开源文件和目标文件
        f1 = open(file1,'rb')
        f2 = open(file2,'wb')
        # 循环按行的去复制
        content = f1.readline()
        while len(content)>0:
            f2.write(content)
            content = f1.readline()
        f1.close()
        f2.close()
    # 测试用例
    copy_file('./a.txt','./c.txt')
    import os
    # 目录的赋值函数
    def copy_path(dir1,dir2):
        '''
        实现目录的复制
        :param dir1: 源目录
        :param dir2: 目标目录
        :return:
        '''
        # 打开源目录
        dlist = os.listdir(dir1)
    
        # 创建新目录
        os.mkdir(dir2)
        在目录中遍历
        for f in dlist:
            # 把目录进行拼接
            file1 = os.path.join(dir1,f)
            file2 = os.path.join(dir2,f)
            # 判断当前是否为文件
            if os.path.isfile(file1):
                copy_file(file1,file2)
            # 判断当前是否为目录
            if os.path.isdir(file1):
                copy_path(file1,file2)
     # 测试用例
  • 相关阅读:
    jQuery之$().each和$.each的区别(转)
    js获取非行间样式--有bug,忧伤
    js之数组方法
    js之检测对象类型
    for-in枚举对象属性
    jq 处理select 下拉框
    阿里大鱼短信发送服务应用实例(PHP SDK)
    php RSA 非对称加解密实例
    JS HTML table 生成 Excel文件
    php RSA 加解密实例
  • 原文地址:https://www.cnblogs.com/hzshisan/p/12571090.html
Copyright © 2011-2022 走看看