zoukankan      html  css  js  c++  java
  • 08 输入输出

      本章内容:

        1、设置字符串的格式

        2、格式字符串

        3、读写文件

        4、检查文件和文件夹

        5、处理文本文件

        6、处理二进制文件

        7、读取网页

    ------------------------------

      程序由数据和指令来完成,我除了要编写具有逻辑关系的指令外,还需要输入对应的数据;这里,我们通常称为输入和输出;

      在前面的内容里面我们介绍了input读取用户输入的字符串。我们需要指定字符串格式,然后了解I/O的读写;还有pickle模块;

    1、设置字符串的格式

      字符串插入式一种设置字符串格式的简单方法;

      format % values 其中 %.2 和 %.5 都事一个格式配置命令;

      一些转换说明符号:

        d  整数

        o  八进制值

        x  小写十六进制数

        X  大写十六进制数

        e  小写科学计数表示的浮点数

        E  大写的科学计数表示的浮点数

        f  浮点数

        s  字符串

        %  %字符

      字符转换表示Python的字符格式:

      你也可以根据需要再格式字符串中包含任意数量的说明符;

      如果要再字符串中包含字符%,必须使用“%%”

    2、格式字符串

      另一种创建美观输出的方式是结合使用格式字符串和字符串函数format(value,format_spec)例如:

      在格式字符串中,用大括号括起的内容都将被替换,这称为命名替换;

      还可以像字符串插入那样使用转换说明符:

      也可以使用大括号来指定格式设置参数,如下图:

     

    3、读写文件

      文件分为两种:文本文件和二进制文件

        1、文本文件

          a基本上是磁盘中的字符串;

          b可以编辑,对于人来说,容易读取

          c对于程序来说难以阅读,需要使用对应的分析程序来进行阅读

          d比等价的二进制文件要打,再以太网上传输时一个非常麻烦的事,所以一般需要进行压缩

        2、二进制文件

          a人类无法阅读

          b程序阅读非常方便

          c占用空间比等价的文件要小

          d于特定的程序相关联,需要使用该特定的程序来运行这些二进制文件

      文件夹

        Windows的文件夹表达方式:

          ‘C:\home\tjd\Desktop\python’

          为了避免使用两个反斜线,我们可以使用 r 来指定:

          r'C:home jdDesktoppython' 和上相同

        mac和Linux则相同,使用  /  来表示目录,例如:

          /home/tjd/Desktop/python

      Python中表示当前目录的函数-- cwd()

    4、检查文件和文件夹

      Python提供一些函数--用来返回有关计算机文件系统中文件和文件夹的信息;

      如下:一种常见的任务是获悉当前工作目录中的文件和文件夹。

    # list.py
    def list_cwd()
      return os.listdir(os.getcwd())

      也可以使用列表解析分别返回当前工作目录中的文件和文件夹:

    # list.py
    def files_cwd():
        return [p for p in list_cwd()
               if os.path.isfile(p)]
    def folders_cwd():
        return [p for p in list_cwd()
               if os.path.isdir(p)]

      实用的文件和文件夹函数:

        os.getcwd()  返回当前工作目录的名称

        os.listdir(p)  返回一个字符串列表,其中包含路径p指定的文件夹中所有文件和文件夹名称

        os.chdir(p)  将当前工作目录设置为路径p

        os.path.isfile(p)   当路径p指定的是一个文件的名称时,返回True,否则返回False

        os.path.isdir(p)    当路径p指定的是一个文件夹的名称时,返回True,否则返回False

        os.stat(fname)     返回有关fname的信息,如大小(单位为字节)和最后一次修改时间

      如果只想获取当前工作目录中的.py文件,可编写如下函数:

    # list.py
    def list_py(path = None):
        if path == None
            path = os.getcwd()
        return [fname fo fname in os.listdir(path)
                  if os .path.isifle(fname)
                  if fname.endswith('.py')]

      下面的代码函数返回当前工作目录中所有文件大小总合:

    # list.py
    def size_in_bytes(fname):
        return os.stat(fname).st_size
    def cwd_size_in_bytes():
        total = 0
        for name in files_cwd():
            total = total + size_in_bytes(name)
        return total

    5、处理文本文件

      处理文件分为三个步骤

      逐行读取文本文件:

        每次读取一行,进行处理后,例如:

    # printfile.py
    def print_file1(fname):
        f = open(fname, 'r')  //打开指定的文件,调用open时,必须指定你要处理的文件名称,还必须指定打开的模式。以“r”读取的模式打开
        for line in f:
            print(line,, end= '')
        f.close() #这行代码是可选的

        注意:open去打开文件的时候,文件没有被读取到内存中;

      Python文件打开模式:

        r  为读取而打开文件(默认模式)

        w  为写入而打开文件

        a  为在文件末尾附加而打开文件

        b  二进制模式

        t  文本模式(默认模式)

        r+  为读写打开文件

      将整个文本文件作为一个字符串进行读取:

        除了open(fname)的方式外,还可以使用下面的方式,将其作为一个大型字符串进行读取,如下所示:(比较常用)

    # printfile.py
    def print_file2(fname)
        f = open(fname, 'r')
        print(f.read())
        f.close()

      这行代码同下:

    print(open(fname, 'r').read())

      

      写入文本文件:

      写入文本文件只比读取文本文件复杂一点点,例如:下面这个函数新建一个名为story.txt的文本文件:

    # write.py
    def make_story1():
        f = open('story.txt', 'w')  //指定为写入模式
        f.write('Mary had a little lamb,
    ')  //使用write()函数写入文本内容;
        f.wirte('and then she had some more.
    ')

      需要注意的是:如果story.txt已经存在,则调用open('story.txt','w')将会将原有文件覆盖掉;

    # write.py
    import os
    def make _story2():
        if os.path.isfile('story.txt'):
            print('story.txt already exists')
        else:
            f = open('story.txt', 'w')
            f.wirte('Mary had a little lamb,
    ')
            f.wirte('and then she had some more.
    ')

      附加文本文件到末尾

      将字符串加入到文本文件是,一种常见的方式将它们附加到文件末尾。与模式‘w’不同的是,这种模式不会删除文件即有的内容。例如:

    def add_to_story(line, fname = 'story.txt')
        f = open(fname, 'a')  //文件一附加模式 ‘a’ 打开的
        f.write(line)

      将字符串插入到文件头部

      我们需要将文件读取到一个字符串中,将新文本插入到该字符串,再将这个字符串写入原来的文件,如下:

    def insert_title(title, fname = 'story.txt'):
        f = open(fname, 'r+')
        temp = f.read()
        temp = title + '
    
    ' + temp
        f.seek(o)  #让文件指针指向文件开头
        f.write(temp)

      f.read() 使得文件指针指向文件末尾,而f.seek()则将指针指向文件开头;

    6、处理二进制文件

      在Python中,如果不是文本文件,则统一被认为是二进制文件,以“b”开头;

    def is_gif(fname)
        f = open(, 'br')
        first4 = tuple(f.read(4))
        return first4 == (0x47, 0x49, 0x46, 0x38)

      检查开启的文件是不是图像文件,就检查二进制开始的文件开头是不是(0x47,0x49,0x46,0x38)这四个字节;

      在而Python中,两个十六进制数可以描述一个字节,这一点非常方便;

      pickle

      二进制的数据对于数据处理效率非常高,但是在高级语言中处理起来则非常困难,而pickle模块则是用来让你能够轻松的读写几乎任何数据结构,如下所示:

    # picklefile.py
    import pickle
    def make_pickled_file():
        grades = {'alan' : [4,8,10,10], 'tom':[7,7,7,8],'dan':[5,None,7,7],'may':[10,8,10,10]}
        outfile = open('grades.dat','wb')
        pickle.dump(grades, outfile)
        
    def get_pickled_data()
        infile = open('grades.dat', 'rb')
        grades = pickle.load(infile)
        return grades

      基本上,你可以使用pickle.dump将数据结构存储到磁盘,以后再使用pickle.load从磁盘获取数据结构。如果需要存储二进制的数据,可以考虑这种方式。

    7、读取网页

       Python为范文网络提供了强大的支持。一种常见任务是让程序自动读取网页,而是用模块 urllib 可轻松的完成这种任务;

      这里的就和我们去http://python.org网站的源代码相同:

      

      另外一个绝妙的模块是webbrowser,他让你能够以编程的方式流量器中显示网页。

      例如:

      这样就能指定打开流量器:

  • 相关阅读:
    使用golang访问kubebernetes
    使用 Rancher 管理现有 Kubernetes 集群
    Running powershell scripts during nuget package installation and removal
    How to Create, Use, and Debug .NET application Crash Dumps in 2019
    寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目
    Selenium+Java之解决org.openqa.selenium.InvalidArgumentException: invalid argument报错问题
    Selenium环境搭建
    关于Xpath定位方法知道这些基本够用
    Web自动化之浏览器启动
    【翻译】编写代码注释的最佳实践
  • 原文地址:https://www.cnblogs.com/BurnovBlog/p/11195973.html
Copyright © 2011-2022 走看看