xml地图|网站地图|网站标签 [设为首页] [加入收藏]

python学习笔记,Python中的file和open用法详解

来源:http://www.ccidsi.com 作者:集成经验 人气:55 发布时间:2020-01-06
摘要:python根基教程_学习笔记21:文件和资料 h32.开荒文件的文件名:/h3 相对路线和相对路线: 展开当前目录下的文书可一向写文件名 展开其他渠道下的文书则接纳相对路线 pre In [9]: f1.rea

python根基教程_学习笔记21:文件和资料

<h3>2.开荒文件的文件名:</h3>
相对路线和相对路线:
展开当前目录下的文书可一向写文件名
展开其他渠道下的文书则接纳相对路线
<pre>

In [9]: f1.readlines()
Out[9]:
['import loggingn',
 'n',
 "logging.basicConfig(filename='test.log', level=logging.INFO)n",
 "logging.info('Started')n",
 "print 'x' 1n",
 "logging.info('Finished')n"]

管式输出

Unix的shell,能够行使管道在三个指令前边续写其余多个指令。

GNU bash在windows下也可以有,详细情形请明白cygwin;

在Mac OS X上,通过极端,能够行使shell文件。

$ cat somescript.py

#File: some script.py

import sys

text=sys.stdin.read()

word=text.split()

wordcount=len(word)

print "Wordcount: ",wordcount

print [w for w in word]

$ cat somescript.py | python somescript.py

Wordcount: 17

['#File:', 'some', 'script.py', 'import', 'sys', 'text=sys.stdin.read()', 'word=text.split()', 'wordcount=len(word)', 'print', '"Wordcount:', '",wordcount', 'print', '[w', 'for', 'w', 'in', 'word]']

  1. flush(卡塔尔 将缓冲音信留存文件中
  2. close(State of Qatar 将缓冲消息存在文件中,并关闭文件
  3. 选用 with 不用调用 close(卡塔尔国 会自动关闭文件
    <pre>
    with open(filename,mode) as f:
    prinr f.read()
    </pre>

In [8]: f1 = open('test.py')                                                                                                                                                                     

读取全数内容

要是文件不是不小,能够选取不带参数的read方法一回读取整个文件(把整个文件作为叁个字符串来读取),恐怕使用readlines方法(把文件读入多少个字符串列表,在列表中每种字符串正是单排)。

在乎:将文件的故事情节读入一个字符串也许读入列表在别的时候也很有用。譬如在读取后,能够对字符串使用正则表明式操作,也得以将行列表存入一些的数据布局中,以备现在应用。

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> print [char for char in f.read()]

['p', 'r', 'i', 'n', 't', ' ', "'", 'h', 'e', 'l', 'l', 'o', ',', ' ', 'n', 'i', 's', 'n', "'", 't', ' ', 'a', 'n']

>>> f.close()

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> print [line for line in f.readlines()]

["print 'hello, n", "isn't an"]

>>> f.close()

<h3>5.文件缓冲:</h3>

In [9]: f1.
f1.close       f1.fileno      f1.name        f1.readinto    f1.softspace   f1.writelines
f1.closed      f1.flush       f1.newlines    f1.readline    f1.tell        f1.xreadlines
f1.encoding    f1.isatty      f1.next        f1.readlines   f1.truncate   
f1.errors      f1.mode        f1.read        f1.seek        f1.write      

运用fileinput达成懒惰行迭代

在急需对二个不胜大的文件进行迭代行的操作时,readlines会占用太多的内部存款和储蓄器。这时候能够利用while readline方法来代替。

>>> import fileinput

>>> print [line for line in fileinput.input('/home/ggz2/magiccube/mysh/pys/somescript.py')]

["print 'hello, n", "isn't an"]

<h3>3.文书张开形式:</h3>
r 以只读的形式张开文件(暗许) 文件空中楼阁会报错
w 以写入的点子展开文件,会覆盖已存在的文本 存在覆盖 不设有创制
a 以写入的艺术展开文件,如若文件存在会大增写入,不清空早先的文件
b 以二进制格局张开文件,例:wb、rb形式 图片 摄像等公事

In [9]: f1.rea
f1.read       f1.readinto   f1.readline   f1.readlines 

文本情势

如果open函数只带一个文书名参数,则能够收获能读取文件内容的公文对象。

譬喻要向文件内写入内容,则必得提供多少个格局参数来显式表明。open函数中的方式参数独有多少个值。

值 描述

‘r’ 读模式

‘w’ 写模式

‘a’ 追加形式

‘b’ 二进制格局(可添加到其余方式中接纳)

‘ ’ 读/写形式(可增加到别的情势中选拔)

理解地钦命读方式和怎么样方式参数都无须的职能是如出一辙的。使用写格局可以向文件写入内容。

‘ ’参数能够用到其它任何格局中,指明读和写都以同意的。比方’r ’能在开采叁个文书文件用来读写时行使。

‘b’方式改良管理公事的办法。平时的话,python假定管理的是文件文件(包蕴字符)。平日那样做不会有啥难题,但只要拍卖的是局地任何品种的公文(二进制文件),例如声音剪辑或图像,那么相应在格局参数中加进’b’。参数’rb’能够用来读取二个二进制文件。

只顾:通过在方式参数中使用U参数能够在开拓文件时接纳通用的换行符补助形式,在此种形式下,全数的换行符/字符串(rn,r或n)都被调换到n,而毫无思虑运营的平台。

-- coding:utf-8 --

def fun1(f):
print 'xxx'
def fun2(arg1,arg2):
return f(
arg1,**arg2) 1 #函数的调用
return fun2

def ff(a,b):
return a*b

In [11]: f2 = file('test.py')                                                                                                                                                                    

按行管理

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> while True:

... line=f.readline()

... if not line:

... break

... print line

...

print 'hello,

isn't a

>>> f.close()

  • 可读写情势(可增加到其余情势中行使)

常规先看一下停放的助手文书档案怎么描述file和open,毕竟官方文书档案是最直接最纯粹的描述。

关闭文件

有道是牢牢记住使用close方法关闭文件。

置之不顾来讲,三个文本对象在抽离程序后(也可能退出前)自动关闭,固然十一分闭馆文件不是很珍视,但关闭文件是未有啥样坏处的,可以幸免在一些操作系统或安装中开展无用的纠正,那样做也会幸免用完系统中所打开文件的分配的定额。

写入过的文本延续应该关闭,因为python恐怕会缓存(处于功能的思忖而把多少有时地囤积在某处)写入的数额,要是程序因为有些原因崩溃了,那么数量根本就不会被写入文件。为了安全起见,要在使用完文件后关闭。

假定想确定保证文件被关闭了,应该利用try/finally语句,并在finally子句中调用close方法。

其实,有特意为这种意况设计的说话,即with语句:

with open(“somefile.txt”) as somefile:

do_something(somefile)

with语句可以展开文件同有的时候间将其赋值到变量上,之后方可将数据写入语句体中的文件或进行别的操作。文件在言辞甘休后会被电动关闭,纵然是由于非常引起的停止也是那般。

<h3>6.文书演练:</h3>
<pre>

暂且开掘日常没多大分裂,习贯上赏识用open。

按字节管理

最布满的对文件内容开展迭代的方式是while循环中选择read方法:对各样字符举办巡回;

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> while True:

... char=f.read(1)

... if not char:

... break

... print char

...

p

r

i

n

t

'

h

e

l

l

o

,

i

s

n

'

t

a

>>> f.close()

f1= open(r'C:pythonSourcezsq.py')
f1
<open file 'C:pythonSourcezsq.py', mode 'r' at 0x03557078>
f1.name
'C:pythonSourcezsq.py'
f1.closed
False
f1.tell()
0L
f1.read(12)
'# -- coding'
f1.tell()
12L
f1.read()
":utf-8 -
-nndef fun1(f):n print 'xxx'n def fun2(arg1,arg2):n return f(arg1,arg2) 1 #xe5x87xbdxe6x95xb0xe7x9ax84xe8xb0x83xe7x94xa8n return fun2nnndef ff(a,b):n return abn#ff = fun1(ff)nn@fun1 # @fun1 xe7x9bxb8xe5xbdx93xe4xba5929皇家赌场,x8e ff=fun1(ff)ndef ff1(a,b):n return abn"
f1.read()
''
f1.tell()
283L
f1.seek(0)
f1.tell()
0L
ff=f1.read()
ff
"# -- coding:utf-8 --nndef fun1(f):n print 'xxx'n def fun2(arg1,arg2):n return f(arg1,
arg2) 1 #xe5x87xbdxe6x95xb0xe7x9ax84xe8xb0x83xe7x94xa8n return fun2nnndef ff(a,b):n return abn#ff = fun1(ff)nn@fun1 # @fun1 xe7x9bxb8xe5xbdx93xe4xbax8e ff=fun1(ff)ndef ff1(a,b):n return abn"
print ff

def open(*args, **kwargs):
  return file(*args, **kwargs)
它真实的概念是:

应用基本文件情势

read(n)

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> f.read(7)

'#File: '

>>> f.read(4)

'some'

>>> f.close()

read()

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> print f.read()

#File: some script.py

import sys

text=sys.stdin.read()

word=text.split()

wordcount=len(word)

print "Wordcount: ",wordcount

print [w for w in word]

>>> f.close()

readline()

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> for i in range(3):

... print str(i) ': ' f.readline()

...

0: #File: some script.py

1:

2: import sys

readlines()

>>> import pprint

>>> pprint.pprint(open(r'/home/ggz2/magiccube/mysh/pys/somescript.py').readlines())

['#File: some script.pyn',

'n',

'import sysn',

'text=sys.stdin.read()n',

'word=text.split()n',

'wordcount=len(word)n',

'print "Wordcount: ",wordcountn',

'print [w for w in word]n']

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> f.readlines()

['#File: some script.pyn', 'n', 'import sysn', 'text=sys.stdin.read()n', 'word=text.split()n', 'wordcount=len(word)n', 'print "Wordcount: ",wordcountn', 'print [w for w in word]n']

write(string)

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py','w')

>>> f.write("print 'hello, nSignjing!'")

>>> f.close()

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> f.readlines()

["print 'hello, n", "Signjing!'"]

writelines(list)

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> lines=f.readlines()

>>> f.close()

>>> lines[1]='isn't an'

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py','w')

>>> f.writelines(lines)

>>> f.close()

>>> f=open(r'/home/ggz2/magiccube/mysh/pys/somescript.py')

>>> f.readlines()

["print 'hello, n", "isn't an"]

>>> f.close()

最轻便易行的出口:print
读取键盘的输入:raw_input、input()

In [12]: f2.readlines()
Out[12]:
['import loggingn',
 'n',
 "logging.basicConfig(filename='test.log', level=logging.INFO)n",
 "logging.info('Started')n",
 "print 'x' 1n",
 "logging.info('Finished')n"]

开垦文件

open函数用来开采文件,语法如下:

open([name[,mode[,buffering]])

open函数使用贰个文件名作为唯意气风发的威迫参数,然后回来叁个文书对象。情势(mode)和缓冲(buffering)参数都以可选的。

>>> f=open(r'D:software(x86)Python27README.txt')

比如文件空中楼阁,则现身错误:

>>> f=open(r'D:software(x86)Python27README_unknown.txt')

Traceback (most recent call last):

File "", line 1, in

f=open(r'D:software(x86)Python27README_unknown.txt')

IOError: [Errno 2]

No such file or directory: 'D:\software(x86)\Python27\README_unknown.txt'

<h3>4.文件对象的品质和艺术:</h3>
f.close(卡塔尔 关闭文件
f.read(卡塔尔国 读取文件的装有字符,也得以安装读取字符的个数
f.readlline(卡塔尔从文件中读取并回到少年老成行,也足以设置读取字符的个数,重返列表,后生可畏行多少个值
f.write(str卡塔尔(قطر‎ 将字符串str写入文件
f.writelines(seq卡塔尔国 向文件写入字符串体系seq,seq是回到字符串的可迭代对象
f.seek(offset,fromState of Qatar在文书中活动文件指针,从from(0代表早先位值(暗许卡塔尔(قطر‎,1代表当前职责,2意味着文件末尾)偏移offset个字节
f.tell(State of Qatar 再次回到当前在文书中的地点

open(...)
    open(name[, mode[, buffering]]) -> file object
   
    Open a file using the file() type, returns a file object.  This is the
    preferred way to open a file.  See file.__doc__ for further information.
(END)
先是open是放置函数,使用方法是open('file_name', mode, buffering卡塔尔(قطر‎,再次回到值也是三个file对象,相似,以写情势张开文件假使不设有也会被成立贰个新的。

文件迭代器

文本对象是可迭代的,那象征能够直接在for循环中运用它们,进而对它们进行迭代。

万大器晚成未有向文件中写入内容,那么不苏息文件也是足以的。

>>> f=open('/home/ggz2/magiccube/mysh/pys/somescript.py','w')

>>> f.write("1st:1n")

>>> f.write("2nd:2n")

>>> f.write("3rd:3n")

>>> f.close()

>>> lines=list(open('/home/ggz2/magiccube/mysh/pys/somescript.py'))

>>> lines

['1st:1n', '2nd:2n', '3rd:3n']

>>> lines[2]

'3rd:3n'

>>> lines[1]

'2nd:2n'

>>> lines[0]

'1st:1n'

行使系列对一个开采的文本实行解包操作,把每行都放入三个独门的变量中,这样做是很有实用性的,因为相通不知道文书有稍稍行,但它亲自去做了文件对象的“迭代性”。

文件和素材 张开文件 open函数用来开荒文件,语法如下: open([name[,mode[,buffering]]卡塔尔(قطر‎ open函数使用叁个文...

ff = fun1(ff)

@fun1 # @fun1 相当于 ff=fun1(ff)
def ff1(a,b):
return a*b

f1.close()
f1.closed
True
f2 = open('C:pythonSourcexxx.py','w')
f2.write('aaaaanbbbbb')
f2.close()
f2
<closed file 'C:pythonSourcexxx.py', mode 'w' at 0x03557078>
f2.read()
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
f2.read()
ValueError: I/O operation on closed file
f2 = open('C:pythonSourcezsq.py')
f2.readline()
'# -- coding:utf-8 --n'
f2.readline()
'n'
f2.readlines()
['def fun1(f):n', " print 'xxx'n", ' def fun2(arg1,arg2):n', ' return f(arg1,*arg2) 1 #xe5x87xbdxe6x95xb0xe7x9ax84xe8xb0x83xe7x94xa8n', ' return fun2n', 'n', 'n', 'def ff(a,b):n', ' return abn', '#ff = fun1(ff)n', 'n', '@fun1 # @fun1 xe7x9bxb8xe5xbdx93xe4xbax8e ff=fun1(ff)n', 'def ff1(a,b):n', ' return a*bn']
f2.seek(0)
x = f2.readlines()
f3 = open('C:pythonSourcexx.txt','w')
f3.writelines(x)
f3.flush()
f3.close()
f4 = open('C:pythonSourcexx.txt','a')
f4.write('cccccnddddd')
f4.flush()

with open('C:pythonSourcexx.txt') as f5:
s = f5.readlines()
f5.closed
True
</pre>

In [13]: f2.closed()

TypeError                                 Traceback (most recent call last)
<ipython-input-13-24c97e0e079e> in <module>()
----> 1 f2.closed()

TypeError: 'bool' object is not callable

In [14]: f2.closed
Out[14]: False

In [15]: f2.close()

# 展开不设有的文件

本文由68399皇家赌场发布于集成经验,转载请注明出处:python学习笔记,Python中的file和open用法详解

关键词: 68399皇家赌场 Python

最火资讯