精华内容
下载资源
问答
  • Python文件操作

    千次阅读 多人点赞 2019-01-13 16:27:40
    Python文件操作

    Python文件操作

    计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据
    长期存储设备包括:硬盘、U 盘、移动硬盘、光盘…

    文件的作用:将数据长期保存下来,在需要的时候使用
    在计算机中,文件是以 二进制 的方式保存在磁盘上的

    文本文件和二进制文件

    • 文本文件

      • 可以使用 文本编辑软件 查看
      • 本质上还是二进制文件
      • 例如:python 的源程序
    • 二进制文件

      • 保存的内容 不是给人直接阅读的,而是 提供给其他软件使用的
      • 例如:图片文件、音频文件、视频文件等等
      • 二进制文件不能使用 文本编辑软件 查看

    文件的基本操作

    操作文件的套路

    计算机 中要操作文件的套路非常固定,一共包含三个步骤

    1. 打开文件
    2. 读、写文件
      • 将文件内容读入内存
      • 将内存内容写入文件
    3. 关闭文件

    操作文件的函数/方法

    • Python 中要操作文件需要记住 1 个函数和 3 个方法
    序号 函数/方法 说明
    01 open 打开文件,并且返回文件操作对象
    02 read 将文件内容读取到内存
    03 write 将指定内容写入文件
    04 close 关闭文件
    • open 函数负责打开文件,并且返回文件对象
    • read/write/close 三个方法都需要通过 文件对象 来调用

    read 方法 —— 读取文件

    • open 函数的第一个参数是要打开的文件名(文件名区分大小写)
      • 如果文件 存在,返回 文件操作对象
      • 如果文件 不存在,会 抛出异常
    • read 方法可以一次性 读入返回 文件的 所有内容
    • close 方法负责 关闭文件
      • 如果 忘记关闭文件会造成系统资源消耗,而且会影响到后续对文件的访问
    • 注意read 方法执行后,会把 文件指针 移动到 文件的末尾
    # 1. 打开 - 文件名需要注意大小写
    file = open("README")
    
    # 2. 读取
    text = file.read()
    print(text)
    
    # 3. 关闭
    file.close()
    

    提示
    在开发中,通常会先编写 打开关闭 的代码,再编写中间针对文件的 读/写 操作!

    文件指针

    文件指针 标记 从哪个位置开始读取数据第一次打开 文件时,通常 文件指针会指向文件的开始位置。当执行了 read 方法后,文件指针 默认情况下会移动到 读取内容的末尾

    如果执行了一次 read 方法,读取了所有内容,那么再次调用 read 方法,将不能再读取到任何的内容;因为第一次读取之后,文件指针移动到了文件末尾。

    打开文件的方式

    open 函数默认以 只读方式 打开文件,并且返回文件对象

    语法如下:

    f = open("文件名", "访问方式")
    
    访问方式 说明
    r 只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
    w 只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
    a 追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
    r+ 读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
    w+ 读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
    a+ 读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

    提示
    频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读只写 的方式来操作文件

    写入文件示例

    # 打开文件
    f = open("README", "w")
    
    f.write("hello python!\n")
    f.write("今天天气真好")
    
    # 关闭文件
    f.close()
    

    按行读取文件内容

    read 方法默认会把文件的 所有内容 一次性读取到内存,如果文件太大,对内存的占用会非常严重。

    readline 方法

    • readline 方法可以一次读取一行内容
    • 方法执行后,会把 文件指针 移动到下一行,准备再次读取

    读取大文件的正确姿势

    # 打开文件
    file = open("README")
    
    while True:
        # 读取一行内容
        text = file.readline()
    
        # 判断是否读到内容
        if not text:
            break
    
        # 每读取一行的末尾已经有了一个 `\n`
        print(text, end="")
    
    # 关闭文件
    file.close()
    

    文件读写案例——复制文件

    小文件复制

    打开一个已有文件,读取完整内容,并写入到另外一个文件

    # 1. 打开文件
    file_read = open("README")
    file_write = open("README[复件]", "w")
    
    # 2. 读取并写入文件
    text = file_read.read()
    file_write.write(text)
    
    # 3. 关闭文件
    file_read.close()
    file_write.close()
    
    

    大文件复制

    打开一个已有文件,逐行读取内容,并顺序写入到另外一个文件

    # 1. 打开文件
    file_read = open("README")
    file_write = open("README[复件]", "w")
    
    # 2. 读取并写入文件
    while True:
        # 每次读取一行
        text = file_read.readline()
    
        # 判断是否读取到内容
        if not text:
            break
    
        file_write.write(text)
    
    # 3. 关闭文件
    file_read.close()
    file_write.close()
    
    

    文件/目录的常用管理操作

    终端 / 文件浏览器、 中可以执行常规的 文件 / 目录 管理操作,例如:创建、重命名、删除、改变路径、查看目录内容、……
    Python 中,如果希望通过程序实现上述功能,需要导入 os 模块

    文件操作

    序号 方法名 说明 示例
    01 rename 重命名文件 os.rename(源文件名, 目标文件名)
    02 remove 删除文件 os.remove(文件名)

    目录操作

    序号 方法名 说明 示例
    01 listdir 目录列表 os.listdir(目录名)
    02 mkdir 创建目录 os.mkdir(目录名)
    03 rmdir 删除目录 os.rmdir(目录名)
    04 getcwd 获取当前目录 os.getcwd()
    05 chdir 修改工作目录 os.chdir(目标目录)
    06 path.isdir 判断是否是文件 os.path.isdir(文件路径)

    提示:文件或者目录操作都支持 相对路径绝对路径

    文本文件的编码格式

    文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等

    Python 2.x 默认使用 ASCII 编码格式
    Python 3.x 默认使用 UTF-8 编码格式

    ASCII 编码和 UNICODE 编码

    • ASCII 编码: 一个 ASCII 在内存中占用 1 个字节 的空间
    • UTF-8 编码格式:计算机中使用 1~6 个字节 来表示一个 UTF-8 字符,涵盖了 地球上几乎所有地区的文字

    大多数汉字会使用 3 个字节 表示
    UTF-8UNICODE 编码的一种编码格式

    Ptyhon 2.x 中如何使用中文

    在 Python 2.x 文件的 第一行 增加以下代码,解释器会以 utf-8 编码来处理 python 文件

    # 官方推荐使用:
    # *-* coding:utf8 *-*
    # 也可以使用:
    # coding=utf8
    

    unicode 字符串

    Python 2.x 中,即使指定了文件使用 UTF-8 的编码格式,但是在遍历字符串时,仍然会 以字节为单位遍历 字符串
    要能够 正确的遍历字符串,在定义字符串时,需要 在字符串的引号前,增加一个小写字母 u,告诉解释器这是一个 unicode 字符串(使用 UTF-8 编码格式的字符串)

    # *-* coding:utf8 *-*
    
    # 在字符串前,增加一个 `u` 表示这个字符串是一个 utf8 字符串
    hello_str = u"你好世界"
    
    print(hello_str)
    
    for c in hello_str:
        print(c)
    
    展开全文
  • python文件操作

    千次阅读 2019-01-26 22:35:57
    文件进行创建,读取和保存等操作 Windows 上的倒斜杠以及 OS X 和 Linux 上的正斜杠 在 Windows 上,路径书写使用倒斜杠(\)作为文件夹之间的分隔符。但在 OS X 和Linux 上,使用正斜杠作为它们的路径分隔符。...

    对文件进行创建读取保存等操作

    Windows 上的倒斜杠以及 OS X 和 Linux 上的正斜杠
    Windows 上,路径书写使用倒斜杠(\)作为文件夹之间的分隔符。但在 OS XLinux 上,使用正斜杠作为它们的路径分隔符。如果想要程序运行在所有操作系统上,在编写 Python 脚本时,就必须处理这两种情况。
    写程序时,先import os
    os.path.join() 函数可以很容易完成这件事

    如果将单个文件和路径上的文件夹名称的字符串传递给它,os.path.join()就会返回一个文件路径的字符串,包含正确的路径分隔符

    >>> import os
    >>> os.path.join('usr', 'bin', 'coderdz')
    'usr\\bin\\coderdz'
    

    这是在Windows上运行出的结果,输出中倒斜杠有两个,第一个倒斜杠是转义字符,每个倒斜杠都需要另外一个倒斜杠字符来转义得到
    如果在Linux下得到的结果:
    centos7
    如果需要创建文件名称的字符串,os.path.join()函数就很有用
    在这里插入图片描述
    获取当前工作目录和改变目录

    利用 os.getcwd()函数,可以取得当前工作路径的字符串,并可以利用 os.chdir()改变它,更改的目录不存在会报错!

    在这里插入图片描述
    创建新文件夹:
    程序可以用 os.makedirs()函数创建新文件夹(目录)
    在这里插入图片描述
    在这里插入图片描述
    处理绝对路径和相对路径
    os.path 模块提供了一些函数,返回一个相对路径的绝对路径,以及检查给定的路径是否为绝对路径。
    • 调用 os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转换为绝对路径的简便方法。
    • 调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。
    • 调用 os.path.relpath(path, start)将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。

    >>> os.path.abspath('.')
    'C:\\system32'
    >>> os.path.abspath('.\\Scripts')
    'C:\\system32\\Scripts'
    >>> os.path.isabs('.')
    False
    >>> os.path.isabs(os.path.abspath('.'))
    True
    >>> os.path.relpath('C:\\Windows', 'C:\\')
    'Windows'
    >>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
    '..\\..\\Windows'
    >>> os.getcwd()
    'C:\\system32'
    

    调用 os.path.dirname(path)将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容。调用 os.path.basename(path)将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。

    >>> path = 'C:\\Windows\\System32\\calc.exe'
    >>> os.path.basename(path)
    'calc.exe'
    >>> os.path.dirname(path)
    'C:\\Windows\\System32'
    

    如果同时需要一个路径的目录名称和基本名称,就可以调用 os.path.split()

    >>> calcFilePath = 'C:\\Windows\\System32\\calc.exe'
    >>> os.path.split(calcFilePath)
    ('C:\\Windows\\System32', 'calc.exe')
    

    接受一个文件路径并返回每个文件夹的字符串的列表的方法:

    >>> calcFilePath.split(os.path.sep)
    ['C:', 'Windows', 'System32', 'calc.exe']
    

    在 OS X 和 Linux 系统上,返回的列表头上有一个空字符串:

    >>> '/usr/bin'.split(os.path.sep)
    ['', 'usr', 'bin']
    

    查看文件大小和文件夹内容

    • 调用 os.path.getsize(path)将返回 path 参数中文件的字节数。
    • 调用 os.listdir(path)将返回文件名字符串的列表,包含 path 参数中的每个文件
    >>> os.path.getsize('C:\\Windows\\System32\\calc.exe')
    776192
    >>> os.listdir('C:\\Windows\\System32')
    ['0409', '12520437.cpx', '12520850.cpx', '5U877.ax', 'aaclient.dll',
    --snip--
    'xwtpdui.dll', 'xwtpw32.dll', 'zh-CN', 'zh-HK', 'zh-TW', 'zipfldr.dll']
    

    可以看到,我的计算机上的 calc.exe 程序是 776192 字节。在我的C:\Windows\system32 下有许多文件。如果想知道这个目录下所有文件的总字节数,就可以同时使用 os.path.getsize()和 os.listdir()。

    >>> totalSize = 0
    >>> for filename in os.listdir('C:\\Windows\\System32'):
     totalSize = totalSize + os.path.getsize(os.path.join('C:\\Windows\\System32', filename))
    >>> print(totalSize)
    1117846456
    

    可以查看C:\Windows\System32文件夹属性大小是否与计算一致。

    检查路径有效性
    如果你提供的路径不存在,许多 Python 函数就会崩溃并报错。os.path 模块提
    供了一些函数,用于检测给定的路径是否存在,以及它是文件还是文件夹。
    • 如果 path 参数所指的文件或文件夹存在,调用 os.path.exists(path)将返回 True,
    否则返回 False。
    • 如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path)将返回 True,否
    则返回 False。
    • 如果 path 参数存在,并且是一个文件夹,调用 os.path.isdir(path)将返回 True,
    否则返回 False。
    在这里插入图片描述

    文件读写过程
    在 Python 中,读写文件有 3 个步骤:
    1.调用 open()函数,返回一个 File 对象。
    2.调用 File 对象的 read()或 write()方法。
    3.调用 File 对象的 close()方法,关闭该文件。

    myfile=open('D:\\hello.txt')  #打开文件对象
    #open函数默认只读,可加入参数'r'作为第二个参数,但效果也是只读模式
    >>> helloContent = helloFile.read()
    >>> helloContent
    'Hello world!'
    

    使用 readlines()方法,从该文件取得一个字符串的列表,列表中的每个字符串就是文本中的每一行。

    >>> sonnetFile = open('sonnet29.txt')
    >>> sonnetFile.readlines()
    [When, in disgrace with fortune and men's eyes,\n', ' I all alone beweep my
    outcast state,\n', And trouble deaf heaven with my bootless cries,\n', And
    look upon myself and curse my fate,']
    

    写入文件

    • open(file, ‘w’) :打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除覆盖。如果该文件不存在,创建新文件。
    • open(file, ‘a’) :打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    >>> baconFile = open('bacon.txt', 'w')
    >>> baconFile.write('Hello world!\n')
    13
    >>> baconFile.close()
    >>> baconFile = open('bacon.txt', 'a')
    >>> baconFile.write('Bacon is not a vegetable.')
    25
    >>> baconFile.close()
    >>> baconFile = open('bacon.txt')
    >>> content = baconFile.read()
    >>> baconFile.close()
    >>> print(content)
    Hello world!
    Bacon is not a vegetable.
    

    用 shelve 模块保存变量
    利用 shelve 模块,你可以将 Python 程序中的变量保存到二进制的 shelf 文件中。这样,程序就可以从硬盘中恢复变量的数据。中的变量保存到二进制的 shelf 文件中。这样,程序就可以从硬盘中恢复变量的数据。shelve 模块让你在程序中添加“保存”和“打开”功能。例如,如果运行一个程序,并输入了一些配置设置,就可以将这些设置保存到一个 shelf 文件,然后让程序下一次运行时加载它们。

    import os, shelve
    demo=shelve.open('demodata') #如果没有demodata文件,则创建
    cats=['Zophie', 'Pooka', 'Simon']
    demo['cats']=cats
    demo.close()
    demo=shelve.open('demodata')
    print(type(demo))
    print(demo['cats'])
    

    运行上述代码,会在当前目录生成demodata.bak, demodata.dir, demodata.dat三个新文件.而在LInux上,只会生成一个demodata.db文件。这些二进制文件存储着shelve数据。
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
    shelf 值有 keys()和 values()方法,返回 shelf 中键和值的类似列表的值。因为这些方法返回类似列表的值,而不是真正的列表,所以应该将它们传递给 list()函数,取得列表的形式。

    print(list(demo.keys()))
    print(list(demo.values()))
    

    在这里插入图片描述

    展开全文
  • Python 文件操作

    万次阅读 2014-10-27 16:21:23
    Python文件操作主要通过open()函数进行,open()函数是个内置 (built-in) 函数 一般用法如下: f= open(文件名,模式)   文件名:文件的路径和名字,如果在当前文件夹下,直接写文件名就可以了 模式:一般有...

    Python的文件操作主要通过open()函数进行,open()函数是个内置 (built-in) 函数

    一般用法如下:

    f = open(文件名,模式)

     

    文件名:文件的路径和名字,如果在当前文件夹下,直接写文件名就可以了

    模式:一般有如下几种:

    Character

    Meaning

    'r'

       只读模式

    'w'

       只写模式,会将原来的内容擦掉,从头开始写入

    'x'

       创建文件,如果文件已存在,则创建失败

    'a'

       继续在文件的末尾写入

    'b'

       二进制模式

    '+'

       可读可写

     

    这里的’+’模式不是很好理解,

    官方文档的解释是这样的:opena disk file for updating (reading and writing)

    个人理解如下:

    其实平时主要有两种用法嘛,r+ ,w+

    自己亲自测试了一下,两者的区别如下:

    r+:从开始直接写入文件,也就是从文件头开始覆盖文件,比如原来文件里是abcdefg,当用r+模式写入ABCD时,文件变成ABCDefg了

    w+:先将文件清空再写入,比如比如原来文件里是abcdefg,当用w+模式写入ABCD时,文件变成ABCD了

     

    示例如下

    __author__ = 'MrChen'
    #python基本文件操作
    
    myFile = open('静夜思.txt', 'w')
    myFile.write('静夜思\n窗前明月光,\n疑是地上霜。\n')
    myFile.close()
    
    myFile = open('静夜思.txt', 'a')
    myFile.write('举头望明月,\n我叫郭德纲。\n')
    myFile.close()
    
    myFile = open('静夜思.txt', 'r')
    for line in myFile.readlines():
        print(line, end='')
    
    myFile.seek(0)
    print(len(myFile.readlines()))
    myFile.close()
    
    

    运行结果如下:

    静夜思
    窗前明月光,
    疑是地上霜。
    举头望明月,
    我叫郭德纲。
    5

    其中的\n是换行操作,如果不知道自己机器的换行符是啥,可以在IDLE里这样看,其实使用’\n’一样可以达到换行的效果

    >>> Import os
    >>> os.linesep
    '\r\n'


    print(line, end='')

    如果不加end=''那么输出的中间会空一行,因为print默认在最后是存在一个换行符的,去掉最后的换行符只要将换行符换成空字符串就可以啦

    myFile.seek(0)

    将文件指针指向文件的开头位置,因为已经读了一遍文件了,所以文件指针指到文件的末尾,如果还需要重新读取一遍文件,需要将文件指针指向文件头

    myFile.readlines()

    返回的是一个列表,本例中可以看到该列表有5项,每行都是列表中的一项






    展开全文
  • python 文件操作

    千次阅读 2014-04-03 14:44:25
    对于任何一门语言来说,文件操作(打开,读取,修改,删除,写入)都是非常重要的一部分,本节,我们主要研究python的文件读写功能。 1.文件对象 file_object=open(filename,access_mode='r',buffering=-1); ...

    对于任何一门语言来说,文件操作(打开,读取,修改,删除,写入)都是非常重要的一部分,本节,我们主要研究python的文件读写功能。


    1.文件对象

    file_object=open(filename,access_mode='r',buffering=-1);
    Note:w,只写方式打开,将清空原来文件;r+读写模式打开

    2.文件内建方法

    输入:read(), readline(),readlines()
    输出:write(), writelines()
    Note:没有writeline方法,python在读写文件的时候不会对换行符号进行任何处理,所以读取的时候和写入的时候要根据需要进行处理。另外,print会自动添加换行
    raw_input会自动去掉换行
    文件移动:seek()
    文件迭代:
    文件方法杂项:行分割符和路径分割符,这个需要用到os模块。linesep, sep, pathsep, curdir, pardir是os模块中五个常用的变量。
    3.文件内建属性
    file.closed, file.mode, file.encoding, file.name, file.softspace and so on.

    4.标准文件

    sys.stdin, sys.stdout, sys.stderr

    5.命令行参数

    sys.argv 是参数列表; len(sys.argv)是参数个数

    6.文件系统

    两个模块,os和os.path提供了操作系统的夸平台访问方法:常用的方法有:

    os.sep 可以取代操作系统特定的路径分割符。

    os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。

    os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。

    os.getenv()和os.putenv()函数分别用来读取和设置环境变量。

    os.listdir()返回指定目录下的所有文件和目录名。

    os.remove()函数用来删除一个文件。

    os.system()函数用来运行shell命令。

    os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。

    os.path.split()函数返回一个路径的目录名和文件名。

    os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。

    os.path.existe()函数用来检验给出的路径是否真地存在

    os和os.path模块

    os.listdir(dirname):列出dirname下的目录和文件

    os.getcwd():获得当前工作目录

    os.curdir:返回但前目录('.')

    os.chdir(dirname):改变工作目录到dirname

    os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false

    os.path.isfile(name):判断name是不是一个文件,不存在name也返回false

    os.path.exists(name):判断是否存在文件或目录name

    os.path.getsize(name):获得文件大小,如果name是目录返回0L

    os.path.abspath(name):获得绝对路径

    os.path.normpath(path):规范path字符串形式

    os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)

    os.path.splitext():分离文件名与扩展名

    os.path.join(path,name):连接目录与文件名或目录

    os.path.basename(path):返回文件名

    os.path.dirname(path):返回文件路径


    展开全文
  • 2.5 Python文件操作

    万次阅读 2019-05-22 15:23:21
    2.5 Python文件操作 文件操作主要讲解以下内容: 1.文件本身的操作(python内置) 2.系统中文件和文件夹的操作(os和shutil模块当中) 3.系统路径相关操作(os模块中的子模块 os.path) 文件的基本操作: ...
  • Python文件操作常用方法总结

    千次阅读 2021-02-23 11:49:30
    Python文件操作常用方法总结 文章目录Python文件操作常用方法总结一. 文件操作的作用二. 文件的基本操作2.1 文件操作步骤2.1.1 打开2.1.1.1 打开文件模式2.1.1.2 快速体验2.1.2 文件对象方法2.1.2.1 写2.1.2.2 读...
  • Python 文件操作总结

    千次阅读 2016-05-07 23:59:50
    Python 文件操作总结文件操作close()概述close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。 当 file 对象,被引用到操作另外一个...
  • 文章目录Python文件操作总结——CSV文件的读取和写入1. CSV文件的读取2. CSV文件的写入 Python文件操作总结——CSV文件的读取和写入 python中的CSV文件的读取和写入操作比较简单和直观,只需要把csv文件中数据读出...
  • Python文件操作(I/O):从文件路径开始 关于文件的路径和相关函数Python文件操作(I/O):从文件路径开始一.文件路径二.绝对路径和相对路径当前工作目录绝对路径与相对路径处理绝对路径和相对路径三.文件基本操作四....
  • python文件操作练习

    千次阅读 多人点赞 2021-04-26 18:08:40
    python中,使用open函数,可以打开已经存在的文件,或者创建一个新文件,open(文件名,访问模式)如果没有会建立一个新文件 关闭: close() 2 访问方式 | 2 访问模式及说明 访问模式 说明 r 以只读方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,977
精华内容 21,190
关键字:

python文件操作

python 订阅