Python I/O及FIle方法

一、文件操作

open(file, mode = ‘r‘, buffering = -1 , encoding=None, errors = None, newline = None, closefd = True,opener = None)

八个参数意义:

  • file——可表示文件名,也可是相对当前目录的路径,或者是绝对路径;
  • mode——设置文件的打开模式:r——只读(默认),w——写入(不存在则创建,存在则覆盖),x——文件存在抛异常,不存在则创建并写入,a——追加(若已存在则追加到文件末尾),+——更新模式。一般文本文件使用“r+,w+,x+,a+”,二进制文件采用“rb+,wb+,xb+,ab+”。
  • buffering——缓冲策略,默认值-1,自动设置缓冲区4096或8192字节,当值为0时关闭缓冲区,数据将直接被写入文件。使用缓冲区是为了提高效率减少IO操作,当文件关闭或刷新缓冲区时,数据才真正被写入。
  • encoding和errors——打开文件编码、发生错误时处理方案
  • newline——设置换行模式
  • closefd和opener——调用close方法关闭文件,opener是打开文件时执行的一些加工操作,返回一个文件描述符。

一般只使用前两个参数。

文件内容读取:

filename = ‘E:/a.txt‘
try:
    f = open(filename)
except OSError:
    print(‘打开文件失败‘)
else:
    try:
        content = f.read()
        print(content)
    except OSError:
        print(‘文件读取失败‘)
finally:
    f.close()

简单代码:

with open(‘E:/a.txt‘, ‘r‘) as f:
    content = f.read()
    print(content)

读取文件并复制(w——写入(不存在则创建,存在则覆盖)):

filename = ‘E:/a.txt‘
with open(filename, ‘r‘, encoding=‘utf-8‘) as f:
    lines = f.readlines()
    print(lines)
    copy_f_name = ‘E:/copy_a.txt‘
    with open(copy_f_name, ‘w‘, encoding=‘utf-8‘) as copy_f:
        copy_f.writelines(lines)
        print(‘{}成功复制到{}‘.format(filename, copy_f_name))

结果:
[‘hellohellohellohello‘]
E:/a.txt成功复制到E:/copy_a.txt

二进制文件读写:

  • read(size = -1):size限制读取的行数,size = -1时读取全部字节
  • readline(size = -1)读取并返回一行,参数同上
  • readlines(hint = -1)读取数据到一个列表中,每一个行数据是列表的一个元素,hint限制读取的行数,值为-1是不限制
  • write(b):写入b字节,并返回字节数
  • writelines(lines):向文件中写入一个列表,不添加分隔符,每一行末尾提供分隔符
  • flush(),刷新缓冲区,将缓冲区数据写入文件中。

二进制文件复制(wb——二进制文件写入(不存在则创建,存在则覆盖)):

filename = ‘E:/头像.jpg‘
with open(filename,‘rb‘) as f:
    b = f.read()
    copy_f_name = ‘E:/头像_Copy.jpg‘
    with open(copy_f_name,‘wb‘) as copy_f:
        copy_f.write(b)
        print(‘二进制文件复制成功!‘)

二、OS模块——系统目录与文件的管理:

  • os.rename(src, dst):修改源文件src成目标文件dst,可为相对路径或绝对路径;
  • os.remove(path):删除path目录下指定文件,若为路径,则OSError;
  • os.mkdir(path):创建path目录,若已存在,则FileExistsError;
  • os.rmdir(path):删除path目录:目录非空,则OSError;
  • os.walk(top):遍历top目录树,自上而下,返回三元组(目录路径,目录列表,文件名列表);
  • os.listdir(dir):列出指定目录中的文件和子目录;
  • os.curdir:获得当前目录;
  • os.pardir:获得当前父目录。

import os

f_name = ‘E:/a.txt‘
copy_f_name = ‘E:/a_copy.txt‘
with open(f_name, ‘r‘) as f:
    b = f.read()
    with open(copy_f_name, ‘w‘) as copy_f:
        copy_f.write(b)
# 判断是否存在,否则文件重命名
try:
    os.rename(copy_f_name, ‘E:/b.txt‘)
except OSError:
    os.remove(‘E:/b.txt‘)
# 输出当前目录及父目录
print(os.listdir(os.curdir))
print(os.listdir(os.pardir))
# 判断路径是否存在,否则删除路径
try:
    os.mkdir(‘E:/filesdir‘)
except OSError:
    os.rmdir(‘E:/filesdir‘)
for i in os.walk(‘E:/桌面‘):
    print(i)

结果:

三、os.path模块

  • os.path.abspath(path)——返回绝对路径
  • os.path.basename(path)——返回基础名(如果path指向文件,则返回文件名,指向目录,则返回最后目录名)
  • os.path.dirname(path)——返回path中的目录
  • os.path.exists(path)——path是否存在
  • os.path.isdir(path)——path是文件,返回True
  • os.path.getatime(path)——path是目录,返回True
  • os.path.getmtime(path)——返回最后访问时间(自1970-1-1 00:00:00来的总秒数)
  • os.path.getctime(path)——返回最后修改时间(自1970-1-1 00:00:00来的总秒数)
  • os.path.getsize(path)——返回文件大小,单位字节。

示例:

import os.path
from datetime import datetime

f_name = ‘抢火车票.py‘
all_name = r‘C:\Users\Jery\PycharmProjects\CollectImages\抢火车票.py‘
# 基础名部分
basename = os.path.basename(all_name)
print(basename)
# 目录部分
dirname = os.path.dirname(all_name)
print(all_name)
# 绝对路径
print(os.path.abspath(f_name))
# 文件大小
print(os.path.getsize(f_name))
# 最近访问时间
atime = datetime.fromtimestamp(os.path.getatime(f_name))
print(atime)
# 最近修改时间
mtime = datetime.fromtimestamp(os.path.getmtime(f_name))
print(mtime)
# 创建时间
ctime = datetime.fromtimestamp(os.path.getctime(f_name))
print(ctime)

print(os.path.isdir(dirname))
print(os.path.isfile(f_name))
print(os.path.exists(f_name))

结果:
抢火车票.py
C:\Users\Jery\PycharmProjects\CollectImages\抢火车票.py
C:\Users\Jery\PycharmProjects\CollectImages\抢火车票.py
5673
2019-03-27 11:19:39.251669
2019-03-27 11:19:39.251669
2019-03-15 19:48:48.315313
True
True
True

Process finished with exit code 0

原文地址:https://www.cnblogs.com/Jery-9527/p/10607219.html

时间: 2024-10-17 06:37:29

Python I/O及FIle方法的相关文章

Ubuntu下 fatal error: Python.h: No such file or directory 解决方法

参考: fatal error: Python.h: No such file or directory Ubuntu下 fatal error: Python.h: No such file or directory 解决方法 根据使用的Python版本安装python-dev库. sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x i

Python读写excel表格的方法二

目的:实现用python的另一种方法做excel的读取.新增操作. 环境:ubuntu 16.04  Python 3.5.2 情景:之前介绍了一种操作excel文件的方法(私链),现在使用另一种方法读写excel文件,一次性读出或写入,读写也很方便,读出为有序字典,像二维数组,需要用到3个第三方模块,pyexcel-io, pyexcel-xls, xlrd,主要导入pyexcel-xls和collections,pyexcel-xls基于xlrd和pyexcel-io,所以支持xls和xls

Sublime Text 2 运行 Python 脚本中文路径解决方法

在 SublimeText 中直接运行 Python 脚本,出现以下报错提示: Running python -u C:\Documents and Settings\Administrator\桌面\furl.py Traceback (most recent call last): File ".\sublime_plugin.py", line 340, in run_ return self.run(**args) File ".\exec.py", lin

_mysql.c:29:20: error: Python.h: No such file or directory

在Centos系统中安装 pip install MySQL-python 提示: _mysql.c:29:20: error: Python.h: No such file or directory_mysql.c:40:26: error: structmember.h: No such file or directory 解决方法:yum install python-devel #yum install mysql-devel.x86_64 -----------------------

【python初级】010-构造方法,属性和迭代器

构造方法,属性和迭代器 目录: -------------构造方法 1.构造方法的基本使用 2.重写一般方法和特殊的构造方法 3.绑定的超类构造方法 4.调用为绑定的超类来构造方法 5.使用super函数 6.成员访问 7.基本的序列和映射规则 8.子类化列表,字典和字符串 -------------属性 -------------迭代器 一:构造方法 在python的心版本中,会有一些特性(比如属性和super函数)不会再老式的类上起作用,为了确保使用的类是新型的,应该把赋值语句metacla

迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有

迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有点拗口,实际上要想让一个迭代器工作,至少要实现__iter__方法和next方法.很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用.优雅.pythonic.下边是一个例子,从里边你会感受到不用列表而用迭代器的原因. #!/usr/bin/env python #c

python子类调用父类的方法

python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找. 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的. 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,子类其实是重写了父类的构造函数

Python机器视觉编程环境搭建方法

Python机器视觉编程环境搭建方法 1. Why Python C/C++ 早期的计算机视觉领域大多数程序都是用C/C++编写.随着计算机硬件速度越来越快,开源平台越来越多,开发者选择计算机视觉算法的实现语言变得更加灵活,代码编写的效率和易用性成为选择编写语言时的考虑因素,而不再仅仅只考虑执行效率. Python Python的跨平台.开放性.易用性,加之丰富的资源使其成为近年来越来越多开发者的选择.国外出版了大量的Python编程.学习书籍,亚马逊搜索Python图书,结果列表长达100页共

Python打包文件夹的方法小结(zip,tar,tar.gz等)

本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文件(未压缩) def make_zip(source_dir, output_filename):   zipf = zipfile.ZipFile(output_filename, 'w')   pre_len = len(os.path.dirname(source_dir))   for pa