Python文本文件操作

Python文本文件操作

单个文本文件读取

1.读取文本文件的旧型语法

示例:

读取名为file_to_read.txt的文本文件内容。

文本文件内容:

I
love
Rock
n
Roll.
input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
#文件路径以下面这种形式表示也行
#input_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_read.txt"
filereader = open(input_file, 'r')  #'r' 表示打开文件的方式是只读
#按行输出文本文件内容
for row in filereader:
    print(row.strip())  #strip()用于取出每行最后的换行符
filereader.close()  #关闭文件,必须执行这不操作

输出结果:

I
love
Rock
n
Roll.

2.读取文本文件的新型语法

示例:

与上面示例读取相同的文本文件

input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
#文件路径以下面这种形式表示也行
#input_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_read.txt"
with open(input_file, 'r', newline = '') as filereader'
    for row in filereader:
        print(row.strip())  #strip()用于取出每行最后的换行符

运行结果:与上面相同。

新旧两种语法型区别:

  1. 从Python 2.5开始,支持新型语法;
  2. 新型语法采用with语句来创建文件对象;
  3. with语句结束时会自动关闭文件,不必使用filereader.close()。

3.读取整个文件

示例:

input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
with open(input_file, 'r', newline = '') as filereader:
    content = filereader.read() #用read()读取整个文件
    print(content)

运行结果:与上面相同。

4.创建一个包含文件各行内容的列表

示例:

input_file = "E:/CVSwork/PythonDataAnalysisFoundation/file_to_read.txt" #文件路径
with open(input_file, 'r', newline = '') as filereader:
    lines = filereader.readlines() #用readlines()创建列表
    print(lines)

运行结果:

['I\r\n', 'love\r\n', 'Rock\r\n', 'n\r\n', 'Roll.']

使用glob读取多个文本文件

在很多商业应用中,需要对多个文件进行相同或相似的处理。

读取多的文件需要在脚本文上方添加 import globimport os 两个语句。

当导入了os模块之后,就可以使用它提供的若干种路径名函数了。例如:os.path.join函数可以巧妙地将一个或多个路径成分连接在一起。glob模块可以找出与特定模式相匹配的所有路径名。os模块和glob模块组合在一起使用,可以找出符合特定模式的某文件夹下面的所有文件。

示例:

import os
import glob

#inputPath是文件夹路径,该文件夹中存放file_to_read.txt与file_to_read2.txt
inputPath = "E:\\CVSwork\\PythonDataAnalysisFoundation"
for input_file in glob.glob(os.path.join(inputPath, '*.txt')):
    print("input_file: ", input_file)
    with open(input_file, 'r', newline = '') as filereader:
        for row in filereader:
            print(row.strip())

os.path.join() 函数将括号内的参数以文件路径的形式连接在一起,即 “E:\CVSwork\PythonDataAnalysisFoundation\filename.txt”; glob.glob() 函数按照特定模式进行路径名匹配,即在路径 “E:\CVSwork\PythonDataAnalysisFoundation” 下寻找txt文件。

运行结果:

input_file:  E:\CVSwork\PythonDataAnalysisFoundation\file_to_read.txt
I
love
Rock
n
Roll.
input_file:  E:\CVSwork\PythonDataAnalysisFoundation\file_to_read2.txt
I
like
jazz,
too.

写入文本文件

Python提供了两种简单的方法来将输出写入文本文件和分隔符文件。 write 方法可以单个字符串写入一个文件, writelines 方法可以将一系列字符串写入一个文件。

如果写入文件存在,则文件中原来的内容将会被覆盖;如果输入文件不存在,则会自动新建一个文件,然后再写入内容。

示例:

my_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
max_index = len(my_letters)

#write
output_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_write.txt"    #文件路径
filewriter = open(output_file, 'w') #创建文件对象,'w'表示‘可写’
for index in range(max_index):
    if index < max_index - 1:
        filewriter.write(my_letters[index] + "\t")  #使用write写入文件
    else:
        filewriter.write(my_letters[index] + "\n")

my_words = ["I ", "Love ", "Rock 'N' Roll."]
filewriter.writelines(my_words) #使用writelines写入文件
filewriter.close()  #关闭文件

运行结果:

file_to_write.txt文件中的内容形式如下。

a	b	c	d	e	f	g	h
I Love Rock 'N' Roll.

文本文件内容追加

将新的内容追加到一个已经存在的输出文件末尾(文件不存在则会新建一个)。与写入文件不同,追加不会覆盖文件中原来的内容。

示例:

output_file = "E:\\CVSwork\\PythonDataAnalysisFoundation\\file_to_append.txt"
filewriter = open(output_file, 'a')
filewriter.write("I'm Ziggy. " + "\n")
my_words = ["I ", "Love ", "Rock 'N' Roll."]
filewriter.writelines(my_words)
filewriter.close()

运行结果:

file_to_write.txt文件中的内容形式如下。

I'm Ziggy.
I Love Rock 'N' Roll.

再运行一次,file_to_write.txt文件中的内容形式如下。

I'm Ziggy.
I Love Rock 'N' Roll.
I'm Ziggy.
I Love Rock 'N' Roll.

在原文件内容后面又追加了一遍相同的内容。


关于参数 newline = ‘’

newline = “”;

\r 的意义。


文件打开方式

r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式

rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+: 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


参考文献:
《Python编程从入门到实践》
《Python数据分析基础》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值