Python学习笔记之文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012561176/article/details/82107146

一、从文件中读取数据:有时候,往往会把相关的信息生成一个文件存储在里面,如果要使用文本文件中的信息,首先需要将信息读取到内存中。为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。 

1、读取整个文件:

(1)、下面新建一个文件为file.txt,文件内容如下:

Python
java
PHP
C
C++
谁是最好的语言呢?

(2)、接着,新建一个file_reader.py,用来读取这个文件,其中这个文件和file.txt放在同一个目录,代码如下:

with open('file.txt') as file_obj:
    contents = file_obj.read();
    print(contents.rstrip());

(3)、代码解释:关键字with在不再需要访问文件后将其关闭,其中用了open()这个函数打开了一个文件。函数open()接受一个参数: 要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。函数open() 返回一个表示文件的对象。其中我们把打开file.txt的作为了一个对象存储在file_obj当中。在使用read()方法读取整个文件的内容,并存储在contents当中,打印输出,其中使用了rstrip()方法去除末尾的空白符。

(4)、运行后如下图所示:

(5)、如果file.txt不跟file_reader.py放在同一个目录,即把file.txt放在别的目录底下,下面吧file.txt放在python_stu目录底下,那读取file.txt的话要怎么读取呢?可修改file_reader.py代码为如下所示:

with open('F://python_stu//file.txt') as file_obj:
    contents = file_obj.read();
    print(contents.rstrip());

注:如果会报OSError: [Errno 22] Invalid argument: 具体可查看这篇文章:

https://blog.csdn.net/u012561176/article/details/82107350

2、逐行读取:我们可以使用for循环来逐行读取文件的内容,可修改上面的代码为:

with open('file.txt') as file_obj:
    for content in file_obj:
        print(content);

运行后如下图所示:

其中包含换行,是因为file.txt文件是换行的,会默认加上一个换行符,去除换行符可以使用rstrip()去除即可。

3、创建一个包含文件各行内容的列表 :可以使用方法readlines()从文件中读取每一行,并将其存储在一个列表中,然后在循环读取整个列表,可修改file_reader.py代码如下所示:

with open('file.txt') as file_obj:
    lines = file_obj.readlines();
	
for line in lines:
    print(line.rstrip());

4、使用文件里的内容,可以对文件里的相关内容进行修改等等操作。修改file_reader.py代码后如下:

with open('file.txt') as file_obj:
    lines = file_obj.readlines();
	
for line in lines:
    if line.rstrip() == 'Python':
        line = "I love python";
    else:
        line = line.title();
    print(line.rstrip());

运行后如下图所示:

注:读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数int()将其转换为整数,或使用函数float()将其转换为浮点数。 

5、包含很多位数的大型文件,比如下面我们修改file.txt为一个有200位小数点的小数,此时再运行代码时如下:

当这个数值为百万的时候呢,Python对于你可处理的数据量,没有任何限制;只要系统的内存足够多,你想处理多少数据都可以。

我们可以简化一下程序代码,当小数点太多时,只显示前面的多少位,后面以小数点概括,代码如下:

with open('file.txt') as file_obj:
    lines = file_obj.readlines();
	
for line in lines:
    print(line[:50]+".....");

运行后如下图所示:

6、使用用户输入来处理相关文件内容,代码如下:

file.txt文件:

Python
java
PHP
C
C++
谁是最好的语言呢?

file_reader.py文件:

with open('file.txt') as file_obj:
    lines = file_obj.readlines();
	
for line in lines:
    str = '';
    str += line.title().strip().rstrip();
    love = input("你最喜欢的语言是:");
    if love in str:
        print('喜欢:' + str);
    else:
        print('一个都不喜欢');

运行后如下图所示,循环了6次,依次输入6次喜欢的语言,各自打印相关的信息:

二、写入文件:保存数据的简单的方式之一是将其写入到文件中。通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在:你可以在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。 

1、写入空文件,新增一个file_write.py文件,附上一个简单的代码:

#写入内容到write.txt,再读取出来
with open('write.txt','w') as file_obj:
    file_obj.write("I love Python?sure");
	
with open('write.txt') as file_obj2:
    print(file_obj2.read());

(1)、其中在第二行代码中,调用open()时提供了两个实参,第一个实参也是要打开的文件的名称; 第二个实参('w')告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模 式('r')、写入模式('w')、附加模式('a')或让你能够读取和写入文件的模式('r+')。如果你省略了模式实参,Python将以默认的只读模式打开文件。 如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文 件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。

(2)、运行后如下图所示:

2、写入多行文件:

(1)、使用write()写入字符串方式,修改上面file_write.py的程序代码:

#写入内容到write.txt,再读取出来
with open('write.txt','w') as file_obj:
    file_obj.write("I love Python?sure?");
    file_obj.write("I love Java?sure?");
	
with open('write.txt') as file_obj2:
    print(file_obj2.read());

运行后如下:

好像没换行,因为write()是不会帮你自动换行的,必须自己加换行符,再次修改:

#写入内容到write.txt,再读取出来
with open('write.txt','w') as file_obj:
    file_obj.write("I love Python?sure?\n");
    file_obj.write("I love Java?sure?\n");
	
with open('write.txt') as file_obj2:
    print(file_obj2.read());

(2)、使用writelines()写入列表方式,修改file_write.py的代码如下:

#使用writelines写入列表,然后读取
lists = ["I love python\n","I love java\n"];
with open('write.txt','w') as file_obj:
    file_obj.writelines(lists);
	
with open('write.txt') as file_obj2:
    print(file_obj2.read());

运行后如下:

3、附加到文件,如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。 如果指定的文件不存在,Python将为你创建一个空文件。 

修改上面file_write.py文件代码如下:

#追加文件内容,使用writelines写入列表,然后读取
lists = ["I love python\n","I love java\n"];
with open('write.txt','a') as file_obj:
    file_obj.writelines(lists);
	
with open('write.txt') as file_obj2:
    print(file_obj2.read());

运行后如下图所示:

文本文档也追加进来了。

以上内容仅供大家学习参考,谢谢!

猜你喜欢

转载自blog.csdn.net/u012561176/article/details/82107146
今日推荐