返回顶部
首页 > 资讯 > 后端开发 > Python >[PYTHON] 核心编程笔记之九-Py
  • 899
分享到

[PYTHON] 核心编程笔记之九-Py

核心笔记PYTHON 2023-01-31 06:01:12 899人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

9.2 文件内建函数[open()和file()]内建函数open()[以及file()]提供了初始化输入/输出(I/0)操作的通用接口,open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误,当操作失败,python会产生

9.2 文件内建函数[open()和file()]


内建函数open()[以及file()]提供了初始化输入/输出(I/0)操作的通用接口,open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误,当操作失败,python会产生一个ioError异常


file_object = open(file_name,access_mode='r',buffering=-1)


file_name是打开文件名字的字符串

access_mode代表文件打开的模式, r代表读取,w代表写入,a代表追加,U代表通用换行符支持


例:

fp = open("/etc/motd") #以读方式打开

fp = open('test','w') # 以写方式打开

fp = open('data','r+') #以读写方式打开

fp = open(r'c:\io.sys','rb') # 以二进制读模式打开


9.2.1 工厂函数file()

例如: dict(),bool(),file()等等


9.2.2 通用换行符支持(UNS)


9.3 文件内建方法


9.3.1 输入


read()方法用来直接读取字节到字符串中,最多读取给定数目个字节


readline()方法读取打开文件的一行,然后整行,包括字符结束行,作为字符串返回


readlines()方法会读取所有剩余行然后把他们作为一个字符串列表返回.


9.3.2 输出

write()内建方法功能与read()和readline()相反,它把含有文本数据或二进制数据块的字符串写入到文件中


9.3.3 文件内移动

seek()方法可以在文件中移动文件指针到不同位置,offset字节代表相对于某个位置偏移量,位置的默认值为0, 1代表从当前位置算起,2代表从文件末尾算起


text()方法是对seek()的补充:它告诉你当前文件指针在文件中的位置


9.3.4 文件迭代

for eachLine in f.readline():


9.3.5 其它

close()通过关闭文件来结束对它的访问

调用flush()方法会直接把内部缓冲区的数据立刻写入文件,而不是被动等待

isatty(),当文件是一个类tty设备时返回True,否则false


9.3.6 文件方法杂项:

filename = raw_input('Enter file name: ')

f = open(filename, 'r')

allLines = f.readlines()

f.close()

for eachLine in allLines:

   print eachLine,


使用文件迭代器,每次只读取和显示一行:

filename = raw_input('Enter file name: ')

f = open(filename, 'r')

for eachLIne in f:

   print eachLine,

f.close()


注:行分隔符和其他文件系统的差异

POSIX(Unix系列或Mac OS X)系统上,行分隔符是 换行符 NEWLINE(\n)字符

旧的MacOS下是RETURN(\r)

DOS和WIN32系统下结合使用 \r\n


有助于跨平台开发的os模块属性

os模块属性描述

linesep用来在文件中分隔行的字符串

sep用来分隔文件路径名的字符串

pathsep用来分隔文件路径的字符串

curdir当前工作目录的字符串名称

pardir父目录字符串名称


只要导入os模块,这些变量会设定成自动的值

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

#!/usr/bin/env Python

import os

filename = raw_input('Enter file name: ')

fobj = open(filename,'w')

while True:

   aLine = raw_input("Enter a line ('.' to quit): ")

   if aLine != ".":

       fobj.write('%s%s' %(aLine, os.linesep))

   else:

       break

fobj.close()

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


以可读可写模式创建一个新文件,使用seek()方法在文件内部移动,使用tell()方法展示我们移动的过程

>>> f = open('/tmp/x','w+')

>>> f.tell()

0L

>>> f.write('test line 1\n') # 加入一个长度为12的字符串[0-11]

>>> f.tell()

12L

>>> f.write('test line 2\n') # 加入一个长度为12的字符串[12-23]

>>> f.tell()

24L

>>> f.seek(-12,1) # 向后移12个字节

>>> f.tell()# 到了第二个的开头

12L

>>> f.readline()

'test line 2\n'

>>> f.seek(0,0)  # 回到最开始

>>> f.readline()

'test line 1\n'

>>> f.tell()    # 又回到了第二行

12L

>>> f.readline()

'test line 2\n'

>>> f.tell()    # 又到了结尾

24L

>>> f.close()   # 关闭文件


文件对象的内建方法列表


文件对象的方法操作

file.close()关闭文件

file.fileno()返回文件的描述符

file.flush()刷新文件的内部缓冲区

file.isatty()贩毒案file是否是一个类tty设备

file.next()返回文件的下一行

file.read(size=-1)从文件读取size个字节,当未给定size或给定负值的时候,读取所有字节,作为字符串返回

file.readinto(buf,size)从文件读取size个字节到buf缓冲区(已不支持)

file.readline(size=-1)从文件中读取并返回一行(包括行结束符),或返回最大size个字符

file.readlines(sizeint=0)读取文件的所有行并作为一个列表返回(包含所有行的结束符)

file.xreadlines()用于迭代,可以替换readlines()的一个更高效方法

file.seek(off,whence=0)在文件中移动文件指针,从whence(0代表文件起始,1代表当前位置,2代表文件末尾)偏移off字节

file.tell()返回当前在文件中的位置

file.truncate(size=file.tell()) 截取文件到最大size字节,默认为当前文件位置

file.write(str)向文件写入字符串

file.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象


9.4 文件内建属性


文件对象的属性描述

file.closedTrue表示文件已经被关闭,否则为False

file.encoding文件所使用的编码

file.mode文件打开时使用的访问模式

file.name文件名

file.newlines未读取到行分隔符时为None

file.softspace为0表示在输出一数据后,要加上一个空格符,1表示不加

9.5 标准文件

只要你的程序一执行,那么你就可以访问三个标准文件,标准输入stdin,标准输出stdout,和标准错误stderr.

Python中可以通过sys模块来访问这些文件的句柄

print语句通常输出到sys.stdout

raw_input()通常从sys.stdin接受输入

sys.* 是文件,所以你必须自己处理好换行符


9.6 命令行参数

sys模块通过sys.argv属性提供对命令行参数的访问

总结如下:

sys.argv是命令行参数的列表

len(sys.argv)是命令行参数的个数(也就是arGC)

例:

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

#!/usr/bin/env python

import sys


print 'you entered', len(sys.argv),'arguments..'

print 'they ware:', str(sys.argv)

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

# ./argv.py 76 tales 85 hawk

you entered 5 arguments..

they ware: ['./argv.py', '76', 'tales', '85', 'hawk']


9.7 文件系统


os模块的文件/目录访问函数

函数描述

文件处理

mkfifo()/mknod()创建命名管道/创建文件系统节点

remove()/unlink()Delete file 删除文件

rename()/renames()重命名文件

stat()返回文件信息

symlink()创建符号链接

utime()更新时间戳

tmpfile()创建并打开(w+b)一个新的临时文件

walk()生成一个目录树下的所有文件名


目录/文件夹

chdir()/fchdir()改变当前工作目录/通过一个文件描述符改变当前工作目录

chroot()改变当前进程的根目录

listdir()列出指定目录的文件

getcwd()/getcwdu()返回当前工作目录/功能相同,但返回一个Unicode对象

mkdir()/makedirs()创建目录/创建多层目录

rmdir()/removedirs()删除目录/删除多层目录

os.pardir返回当前目录的父目录


文件描述符操作

open()底层操作系统open(对于文件,使用标准的内建open()函数)

read()/write()根据文件描述符读取/写入数据

dup/dup2()复制文件描述符号/功能相同,但是是复制到另一个文件描述符


设备号

makedev()从major和minor设备号创建一个原始设备号

major()/minor()从原始设备号获得major/mino设备号


os.path模块中的路径名访问函数

函数描述

分隔

basename()去掉目录路径,返回文件名

dirname()去掉文件名,返回目录路径

join()将分隔的各部分组成很成一个路径名

split()返回(dirname(),basename())元组

splitdrive()返回(drivename(),pathname)元组

splitext()返回(filename,extension)元组


信息

getatime()返回最近访问时间

getctime()返回文件创建时间

getmtime()返回最近文件修改时间

getsize()返回文件大小(以字节为单位)


查询

exists()指定路径(文件或目录)是否存在

isabs()指定路径是否为绝对路径

isdir()指定路径是否存在且为一个目录

isfile()指定路径是否存在且为一个文件

islink()指定路径是否存在且为一个符号链接

ismount()指定路径是否存在且为一个挂载点

samefile()两个路径名是否指向同个文件


例: os和os.path模块例子

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

#!/usr/bin/env python


import os


notmp = 0

for tmpdir in('/tmp',r'c:\temp'):

   if os.path.isdir(tmpdir):

       print '%s is a directory' %tmpdir

       break

   else:

       notmp += 1

if notmp != 0:

   print 'no temp directory available'


if tmpdir:

   os.chdir(tmpdir)

cwd = os.getcwd()

print '*** current temporary directory'

print cwd


print '*** creating example directory...'

if not os.path.exists('example'):

   os.mkdir('example')

os.chdir('example')

cwd = os.getcwd()

print '*** new working directory: '

print cwd


print '*** original directory listing: '

print os.listdir(cwd)


print '*** creating test file...'

fobj = open('test','w')

fobj.write('foo\n')

fobj.write('bar\n')

fobj = open('test')

for line in fobj:

   print line,

fobj.close()


print '*** updated directory listing: '

print os.listdir(cwd)


print "*** renaming 'test' to 'filetest.txt'"

os.rename('test','filetest.txt')

print '*** updated directory listing: '

print os.listdir(cwd)


path = os.path.join(cwd,os.listdir(cwd)[0])

print '*** full file pathname'

print path

print '*** (pathname,basename) =='

print os.path.split(path)


print '*** displaying file contents: '

fobj = open(path)

for eachLine in fobj:

  print eachLine,

fobj.close()


print '*** deleting test file'

os.remove(path)

print '*** updated directory listing: '

print os.listdir(cwd)

# means cd ..

os.chdir(os.pardir)

print '*** deleting test directory'

os.rmdir('example')

print '*** DONE'

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


# python test28.py

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

/tmp is a directory

*** current temporary directory

/tmp

*** creating example directory...

*** new working directory:

/tmp/example

*** original directory listing:

[]

*** creating test file...

foo

bar

*** updated directory listing:

['test']

*** renaming 'test' to 'filetest.txt'

*** updated directory listing:

['filetest.txt']

*** full file pathname

/tmp/example/filetest.txt

*** (pathname,basename) ==

('/tmp/example', 'filetest.txt')

*** displaying file contents:

foo

bar

*** deleting test file

*** updated directory listing:

[]

*** deleting test directory

*** DONE

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


核心模块: os和os.path


9.8 文件执行

9.9 永久存储模块

9.9.1 pickle和marshal模块

9.9.2 DBM风格的模块

9.9.3 shelve模块


9.10 相关模块


文件相关模块

模块内容

base64提供二进制字符串和文本字符串的编码/解码操作

binascii提供二进制和ASCII编码的二进制字符串间的编码/解码操作

bz2访问BZ2格式的压缩文件

csv访问csv文件

filecmp用于比较目录和文件

fileinput提供多个文本文件的行迭代器

getopt/optparse提供命令行参数的解析/处理

glob/fnmatch提供Unix样式的通配符匹配功能

gzip/glib读写GNU zip(gzip)文件(压缩需要zlib模块)

shutil提供高级文件访问功能

c/String10对字符串对象提供类文件接口

tarfile读写TAR归档文件,支持压缩文件

tempfile创建一个临时文件(名)

uu格式的编码和解码

zipfile用于读取ZIP归档文件的工作


fileinput模块遍历一组输入文件,每次读取它们内容的一行


glob和fnmatch模块提供老师Unix shell样式文件名的模式匹配,例如使用*通配符代表任意字符串,用问好(?)匹配任意单个字符


核心提示:使用os.path.expanduser()的波浪号(~)进行扩展

Unix:

>>> import os

>>> os.path.expanduser('~/example')

'/root/example'

WIN32:

>>> import os

>>> os.path.expanduser('~/example')

'C:\\Documents and Settings\\example'



--结束END--

本文标题: [PYTHON] 核心编程笔记之九-Py

本文链接: https://lsjlt.com/news/189751.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • [PYTHON] 核心编程笔记之九-Py
    9.2 文件内建函数[open()和file()]内建函数open()[以及file()]提供了初始化输入/输出(I/0)操作的通用接口,open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误,当操作失败,Python会产生...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记之七-Py
    7.1 映射类型:字典字典是Python语言中唯一的映射类型,映射类型对象里哈希值(键)和指向的对象(值)是一对多的关系,字典对象可变,它是一个容器类型,能存储任意个Python对象注:什么是哈希表哈希表是一种数据结构:哈希表中存储的每一条...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记之八-Py
    8.1 if语句if expression:    expr_true_suite8.1.1 多重条件表达式单个if 语句可以通过使用and,or和not实现多重判断条件或是否定判断条件if not warn and (system_loa...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记之十-Py
    10.1 什么是异常10.1.1 错误错误时语法或是逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译当Python检测到一个错误时,解释器就会支出当前流已经无法继续执行下去,这时就出现了异常10.1.2 异常1...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记之六-Py
    6.序列:字符串,列表和元祖6.1序列6.1.1标准类型操作符6.1.2序列类型操作符成员关系操作符(in,not in)判断一个元素是否属于一个序列字符串判断一个字符是否属于这个字符串元祖判断一个对象是否属于该对象序列in/not in ...
    99+
    2023-01-31
    之六 核心 笔记
  • [PYTHON] 核心编程笔记之五-Py
    5.1 数字类型创建数值对象和给变量赋值anInt = 1aLong = -9999999999LaFloat = 3.1415926aComplex = 1.23+4.56j如何更新数字对象变量像一个指针指向装变量值的盒子,对不可变类型来...
    99+
    2023-01-31
    之五 核心 笔记
  • [PYTHON] 核心编程笔记之四-Py
    4.1 Python 对象Python 使用对象模型来存储数据所有的Python对象都拥有三个特性: 身份,类型和值:身份: 每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到,这个值可以认为是该对象的内存地...
    99+
    2023-01-31
    之四 核心 笔记
  • [PYTHON]核心编程笔记(15.Py
    核心笔记:查找与匹配的比较15.1.1 您的第一个正则表达式:15.2 正则表达式使用的特殊符号和字符常用正则表达式符号和特殊符号:记号       说明                                          举...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(16.P
    16.1 介绍16.1.1 什么是客户/服务器架构硬件的客户/服务器架构软件客户/服务器架构16.1.2 客户/服务器网络编程16.2 套接字: 通讯端点16.2.1 什么是套接字套接字是一种具有通讯端点感念的计算机网络数据结构16.2.2...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(14.P
    在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件在特定执行场景包括:在当前脚本继续运行创建和管理子进程执行外部命令或程序执行需要输入的命令通过网络来调用命...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(13.P
    13.1 介绍类与实例:类与实例相互关联,类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息下面的示例展示如何创建一个类:class MyNewObjectType(bases):    'define MyNewO...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(17.P
    17.1 什么是因特网客户端17.2 文件传输17.2.1 文件传输因特网协议流行的有文件传输协议(FTP),Unix-to-Unix复制协议(UUCP),以及网页的超文本传输协议(HTTP),另外,还有(Unix下的)远程文件复制指令sc...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(11.P
    11.1 什么是函数函数式对程序逻辑进行结构化或过程化的一种编程方法,能够整块代码巧妙地隔离成易于管理的小块以下为创建,使用,或引用函数的方法:declaration/definition def foo(): print 'bar'fun...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记(20.W
    20.1 介绍20.1.1 Web应用:客户端/服务器计算20.1.2 因特网20.2 使用Python进行Web应用:创建一个简单的Web客户端20.2.1 统一资源定位符20.2.2 urlparse模块urlparse(urlstr,...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • python核心编程2 第九章 练习
    9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号.附加题: 处理不是第一个字符开头的注释. 1 filename = input...
    99+
    2023-01-30
    第九章 核心 python
  • python学习笔记(九)之语句1
    python学习笔记(九)之语句1printpython2中,print是一个语句,python3中它是一个函数。实例1: print "hello,world!"hello,world!print "hello","world!"h...
    99+
    2023-01-31
    语句 学习笔记 python
  • 《python核心教程2》第九章 练习
    9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号.附加题: 处理不是第一个字符开头的注释. 1 filename = input...
    99+
    2023-01-30
    第九章 核心 教程
  • 《Python核心编程》第五章
    5-1.整型。讲讲Python普通整型和长整型的区别?   答案:    在大多数32位机器上,标准整型的取值范围是-2^31~2^31-1,如果在64位机器上使用64位编译器编译的Python,则整型是64位的。而长整型能表示的数值仅仅与...
    99+
    2023-01-31
    第五章 核心 Python
  • Python核心编程第三版
    Python核心编程第三版高清版 PDF链接: https://pan.baidu.com/s/16jAUKZc3wHUoFZbPnhpVMw 密码: 2y8d ...
    99+
    2023-01-31
    第三版 核心 Python
  • Python核心编程习题解答
    最近在学Python,准备把《Python核心编程(第二版)》上课后有意思的习题做一做,也算是对语言的内容更熟悉一些。我做的代码在github上(链接),可以上去根据题号查看或搜索。难免有理解或做得不对的地方,请指正或一起讨论。慢慢来,踏实...
    99+
    2023-01-31
    习题 核心 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作