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)
     # 测试用例
  • 相关阅读:
    WPF 使用 Direct2D1 画图 绘制基本图形
    WPF 使用 Direct2D1 画图 绘制基本图形
    dot net core 使用 IPC 进程通信
    dot net core 使用 IPC 进程通信
    win2d 图片水印
    win2d 图片水印
    Java实现 LeetCode 240 搜索二维矩阵 II(二)
    PHP closedir() 函数
    PHP chroot() 函数
    PHP chdir() 函数
  • 原文地址:https://www.cnblogs.com/hzshisan/p/12571090.html
Copyright © 2011-2022 走看看