python如何读取文件

编程语言中,我们经常会和文件和文件夹打交道,那么python如何读取文件呢?一起来了解下吧:
python如何读取文件
python如何读取文件
read():
read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符串中,即存在内存中
file_object = open('test.txt') //不要把open放在try中,以防止打开失败,那么就不用关闭了
try:
file_context = file_object.read() //file_context是一个string,读取完后,就失去了对test.txt的文件引用
# file_context = open(file).read().splitlines()
// file_context是一个list,每行文本内容是list中的一个元素
finally:
file_object.close()
//除了以上方法,也可用with、contextlib都可以打开文件,且自动关闭文件,
//以防止打开的文件对象未关闭而占用内存
read()的利端:
方便、简单
一次性独读出文件放在一个大字符串中,速度最快
read()的弊端:
文件过大的时候,占用内存会过大
readline():
readline()逐行读取文本,结果是一个list
with open(file) as f:
line = f.readline()
while line:
print line
line = f.readline()
readline()的利端:
占用内存小,逐行读取
readline()的弊端:
由于是逐行读取,速度比较慢
readlines():
**readlines()一次性读取文本的所有内容,结果是一个list
with open(file) as f:
for line in f.readlines():
print line
这种方法读取的文本内容,每行文本末尾都会带一个' '换行符 (可以使用L.rstrip(' ')去掉换行符)
readlines()的利端:
一次性读取文本内容,速度比较快
readlines()的弊端:
随着文本的增大,占用内存会越来越多
最简单、最快速的逐行处理文本的方法:直接for循环文件对象
file_object = open('test.txt','rU')
try:
for line in file_object:
do_somthing_with(line)//line带" "
finally:
file_object.close()
Python怎么读写文件
一、打开文件
<code class="language-python">openFile = open('../Files/exampleFile.txt', 'a')</code>
说明:
1. 第一个参数是文件名称,包括路径,可以是相对路径./,也可以是绝对路径"d: est.txt";
2. 第二个参数是打开的模式mode,包含r,w,a,r+
'r':只读(缺省。如果文件不存在,则抛出错误)
FileNotFoundError: [Errno 2] No such file or directory: '../Files/exampleFile.txt'
'w':只写(如果文件不存在,则自动创建文件),文件常用w
'a':附加到文件末尾(如果文件不存在,则自动创建文件)
'r+':读写(如果文件不存在,则抛出错误)
FileNotFoundError: [Errno 2] No such file or directory: '../Files/exampleFile.txt'
如果需要以二进制方式打开文件,需要在mode后面加上字符"b",比如"rb""wb"等,图片常用wb
二、读取内容
1. openFile.read(size)
参数size表示读取的数量,可以省略。如果省略size参数,则表示读取文件所有内容。
2. openFile.readline()
读取文件一行的内容
3. openFile.readlines()
读取所有的行到数组里面[line1,line2,...lineN]。在避免将所有文件内容加载到内存中,这种方法常常使用,便于提高效率。
如果要显示文件内容,需要通过print进行打印:print(openFile.readline())
三、写入文件
1. openFile.write('Sample ')
将一个字符串写入文件,如果写入结束,必须在字符串后面加上" ",然后openFile.close()关闭文件
如果需要追加内容,需要在打开文件时通过参数'a',附加到文件末尾;如果覆盖内容,通过参数'w'覆盖
四、文件中的内容定位
1.openFile.read()
读取内容后文件指针到达文件的末尾,如果再来一次openFile.readline()将会发现读取的是空内容,
如果想再次读取第一行,必须将定位指针移动到文件开始位置:
2.openFile.seek(0)
这个函数的格式如下(单位是bytes):openFile.seek(offset, from_what)
from_what表示开始读取的位置,offset表示从from_what再移动一定量的距离,
比如openFile.seek(28,0)表示定位到第0个字符并再后移28个字符。from_what值为0时表示文件的开始,它也可以省略,缺省是0即文件开头。
五、关闭文件释放资源
1.openFile.close()
文件操作完毕,一定要记得关闭文件f.close(),可以释放资源供其他程序使用
六、将读取的内容写入文件
open('../Files/File.txt', 'a').write(openFile.read())
将读取到的内容获取我们需要的存入到另外一个文件
我们一般的文件操作步骤是:
1.打开文件>读取文件>关闭文件
<code class="language-python"></code>
<code class="language-python">openFile <span style="color:#cda869;">= </span><span style="color:#dad085;">open</span>(<span style="color:#8f9d6a;">'../Files/exampleFile.txt'</span><span style="color:#cc7832;">, </span><span style="color:#8f9d6a;">'r'</span>)
<span style="color:#dad085;">print</span>(<span style="color:#8f9d6a;">"</span><span style="color:#8f9d6a;font-family:'宋体';">读取所有内容:</span><span style="color:#cf6a4c;"> </span><span style="color:#8f9d6a;">"</span><span style="color:#cda869;">+</span>openFile.read())
openFile.seek(<span style="color:#cf6a4c;">0</span>)
Python怎么读写文件
<span style="color:#dad085;">print</span>(<span style="color:#8f9d6a;">"</span><span style="color:#8f9d6a;font-family:'宋体';">读取第一行内容:</span><span style="color:#cf6a4c;"> </span><span style="color:#8f9d6a;">"</span><span style="color:#cda869;">+</span>openFile.readline())
openFile.seek(<span style="color:#cf6a4c;">28</span><span style="color:#cc7832;">,</span><span style="color:#cf6a4c;">0</span>)
<span style="color:#dad085;">print</span>(<span style="color:#8f9d6a;">"</span><span style="color:#8f9d6a;font-family:'宋体';">读取开始位置向后移动</span><span style="color:#8f9d6a;">28</span><span style="color:#8f9d6a;font-family:'宋体';">个字符后的内容:</span><span style="color:#8f9d6a;">"</span><span style="color:#cda869;">+</span>openFile.read())
openFile.close()</code>
2.打开文件>写入文件>关闭文件
<code class="language-python">openFile = open('../Files/exampleFile.txt', 'a')
openFile.write('Sample ')
openFile.close()</code>
3.打开文件>读取文件>读取的文件写入到新文件>关闭文件
<code class="language-python">openFile = open('../Files/exampleFile.txt', 'r')
print("读取所有内容: "+openFile.read())
openFile.seek(0)
print("读取第一行内容: "+openFile.readline())
openFile.seek(28,0)
print("读取开始位置向后移动28个字符后的内容:"+openFile.read())
openFile.seek(0)
open('../Files/File.txt', 'a').write(openFile.read())
openFile.close()</code>
# 操作完文件后一定要记得关闭,释放内存资源。
Python文件读取的方法
1.读取整个文件
pi_digits.text
3.1415926535
8979323846
2643383279
单纯的读取一个文件,我们首先要打开文件,然后读取里面的内容,使用read()方法,读取文件的全部内容,然后把读取出来的内容进行赋给一个变量;如下所示:
file_reader.py
with open('pi_digits.text') as file_object:
contents = file_object.read()
print(type(contents))
    print(contents)
输出结果如下:
3.1415926535
   8979323846
   2643383279
<class 'str'>
还有一种方法读取文件,我们来看看,直接打开然后进行读取,不使用with语句:
f = open('pi_digits.text')
  contents = f.read()
  print(contents)
  f.close()
这种方法直接读取文件,但是要记得关闭文件,我们要知道,我们操作的是什么,目的是什么,如果我们只是单纯的读取文件的内容,而不去修改它,那么就单纯使用open()方法,不用第二参数即可:
第一种方法中,with open('pi_digits.text') as file_object:做了大量的工作。我们先来看看open()。要以任何方式使用文件——哪怕仅仅打印其内容,都得先打开文件,这样才能够访问它,而且第一种方法读取之后,赋给变量contents,变量contents是一个字符串,不是列表,也不是元祖之类的,而只是单纯的字符串情况;第二种方法必须记得关闭文件。
文件的相对路径和绝对路径
这两种方法的区别:with在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close();我们也可以调用open()和close()来打开和关闭文件(第二种方法),但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),我们会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。并非任何情况下都能轻松地确定文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:我们只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
所以这两种方法都是可以的,只是with打开的方式更安全一些,不需要我们去确定什么时候关闭文件,而open()直接打开的话就需要我们自己去确定什么时候要关闭文件,要使用close()方法关闭文件。
2.逐行读取
f = open("pi_digits.text")
  for line in f:
    print(line.strip())
  f.close()
我们使用open()和close()方式打开文件,这种情况下,我们一定要记得关闭文件,以免文件遭到破坏,我们打开文件,
也可以使用with语句打开文件,这种方法让我们避免使用close()语句,系统会自动帮助我们在合适的时机关闭文件,也不用担心异常的问题。
with open('pi_digits.text') as f:
    for line in f:
      print(line)
我们使用with语句打开这个文件,并命名为f,然后遍历这个打开的文件,输出每一行。这样我们就可以实现按行读取的方法。
3.把文件读取到一个列表中
with open('pi_digits.text') as f:
    lines = f.readlines()
    print(lines)
把文件读取到一个列表中,readlines()方法是从文件中读取每一行,并将其存储到一个列表中;接下来,该列表被存储到变量lines中;读取文件得到一个列表的方法,我们读取这个文件,并且得到一个列表
f = open("pi_digits.text")
  lines = f.readlines()
  print(lines)
f.close()
我们在直接使用open()打开文件的时候,一定要记得关闭文件,使用close()方法把文件关闭,这点可能经常会一不小心忘记,只记得打开文件,但是没有关闭文件。
二、写入文件
保存数据的最简单的方式之一是将其写入到文件中。
write_message.py
with open('programming.text','w') as f:
    f.write("I love programming")
在这个示例中,调用open()时提供了两个实参。第一个实参也是要打开的文件的名称;第二个实参("w")告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或者让我们能够读取和写入文件的模式('r+').如果我们省略了模式实参,Python将以默认的只读模式打开文件。
读取和写入文件有两种方法,一种是with语句打开文件;另一种是open()和close()结合使用打开和读取文件。
我们要知道我们打开文件是做什么如果只是单纯的打开和读取文件,只需要open()即可;要是写入的话,就需要指定第二参数。默认省略参数的情况下是只读模式的。
写入的方式
(1)写入模式('r')
(2)附加模式('a')
  with open("pi_digits.text",'a') as f:
   f.write("I love you,too,Really ")
f.write("I also love finding meanting in large datasets. ")
   f.write("I love to start to make success.")
写入模式('r')和附加模式('a')都是向文件中写入内容,不同的是写入模式要覆盖之前文件里面的内容。
如果我们要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python
将在返回文件对象前清空该文件。所以使用写入模式('w')的时候一定要小心。
python中文件读取方式
先介绍最一般的python文本文件读取方法
文件路径包括绝对路径和相对路径。绝对路径指从根文件夹开始
'E:\a.txt'上述为绝对路径,所有window下的文件路径,都采用双反斜杠“ \ ”,此外还要注意“ E ”后面的“ : ”。
所有没有从根文件夹开始的文件名和路径,都假定在当前工作目录下,而相对路径是相对于程序的当前工作目录。获取程序的当前工作目录可用一下代码:
>>> import os >>> os.getcwd() 'C:\Python34'当前工作路径指的是当前正在编写的“.py”脚本所在的路径。
可以用os.path.isfile在交互模式下检查当前路径的有效性。
ps:在创建文件时,不要将文件名中加入后缀,注意看下面两个文件的区别。
第二个是我犯的错误,输入文件路径打开文件时,一直报错,并且很难找到原因。
上述程序中的open()类用于打开文件,并返回一个文件对象。
采用with关键字的原因是,python会在适当的时候帮你关闭文件,而不用调用close()关闭文件。
打开文件后,就可以读取文件了。
可以读取整个文件
也可逐行读取
注意:读取文本文件时,python将其中的所有文本都解读为字符串。
也可创建一个包含文件各行内容的列表,然后再对存储在列表中的文件的内容进行操作。
12 12 分享:

相关课程

发表评论

登录后才能评论,请登录后发表评论...
提交评论

最新文章